欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

hdu 1027 next_permutation()简单应用

程序员文章站 2022-03-22 16:25:38
...

hdu 1027 “Ignatius and the Princess II”
题目描述:
给定n个数字,从1到n,要求输出第m小的序列。
输入:
数字n和m,1<=n<=1000,1<=m<=10000。本题有多组输入样例。
输出:
输出第m小的序列。最后一个数字后无空格。
样例输入:
6 4
11 8
样例输出:
1 2 3 5 6 4
1 2 3 4 5 6 7 9 8 11 10

思路:先生成1,2,3,4…n的序列。再用next_permutation()函数一个一个生成更大的序列。

AC代码:

#include<bits/stdc++.h>
using namespace std;
int a[1001];
int main(){
    int n,m;
    while(cin>>n>>m){
        for(int i=1;i<=n;i++) a[i] = i;
        int b = 1;
        do{
            if(b==m) break;
            b++;
        }while(next_permutation(a+1,a+n+1));
        for(int i=1;i<n;i++) cout<<a[i]<<" ";
        cout<<a[n]<<endl;
    }
    return 0;
}