Ignatius and the Princess II 「爱情、让人受尽委屈。」 2022-05-15 05:20 100阅读 0赞 给你N个整数,分别是1,2,3,。。。N。问你全排列的第M个排列为多少? Input The input contains several test cases. Each test case consists of two numbers, N and M(1<=N<=1000, 1<=M<=10000). You may assume that there is always a sequence satisfied the BEelzebub’s demand. The input is terminated by the end of file. Output For each test case, you only have to output the sequence satisfied the BEelzebub’s demand. When output a sequence, you should print a space between two numbers, but do not output any spaces after the last number. Sample Input 6 4 11 8 Sample Output 1 2 3 5 6 4 1 2 3 4 5 6 7 9 8 11 10 分析:**全排列 get在两个点 第一个是用 sort排序 第二个是用break停止 否则会TL** 代码总览: #include <cstdio> #include <iostream> #include <algorithm> using namespace std; int main() { int m,n,a[11000],i; while(scanf("%d %d",&m,&n)!=EOF) { int count=0; for(i=0;i<m;i++) a[i]=i+1; sort(a,a+m); do{ count++; if(count==n) { for(i=0;i<m-1;i++) printf("%d ",a[i]); printf("%d\n",a[m-1]); break; } }while(next_permutation(a,a+m)); } return 0; }
还没有评论,来说两句吧...