Ignatius and the Princess II

Ignatius and the Princess II

题目链接:Ignatius and the Princess II

题目概述:给出多行,每行有n和m两个数,n代表1,2,3…,n。n个数字可组合成不同的序列,求出第m小的序列。这里按大小比较是按字典顺序。用例子说明一下字典顺序,有a,b,c,d四个数,组成的由小到大的序列是:

a b c d
a b d c  //第三列,d在c后面
a c b d  //第二列,c在b后面
a c d b  //第二列,c在b后面,第三列,d在b后面
a d b c
a d c b
b a c d
....
....

字母换成数字即是该题中的大小序列。STL中next_permutation即实现了该算法,简单调用,设置count统计即可。

Input:

6 4
11 8

Output:

1 2 3 5 6 4
1 2 3 4 5 6 7 9 8 11 10

解题思路:


最终代码:

#include
#include
#include
#include
using namespace std;
int a[10000],coun,n,m,i;
int main()
{
    while(cin>>n>>m)
    {
        for(i=0;i1;
        }
        coun = 1;
        while(next_permutation(a,a+n)
        {
            coun++;
            if(coun==m)
                break;
        }
        printf("%d",a[0]);
        for(i=1;iprintf(" %d",a[i]);
        printf("\n");
    }
    return 0;
}

你可能感兴趣的:(刷题)