题目如下:
. 对集合{1, 2, 3, …, n}中的数进行全排列,可以得到 n!个不同的排列方式。现在我们用字母序把它们列出来,并一一标上序号,如当 n=3 时:
0.123
1.132
2.213
3.231
4.312
5.321
现在,请书写一个函数 void print (int n, int k), (函数原型是用 C语言写的,你可以用你熟悉的语言)在已知 n和序号 k 的情况下,输出对应的排列,并简要阐述思路
想到的是stl中的next_permutation函数,代码如下:
#include<iostream> #include<algorithm> using namespace std; void print(int n, int k){ //生成1..n的序列并初始化 char *ch = new char[n+1];//最后一个为结束符 for(int i=0;i<n;++i) ch[i]=i+'1'; ch[n]='\0'; while(k-->0){ next_permutation(ch,ch+n); } cout << ch << endl; delete []ch; } void main(){ print(3,5); }