您的位置:首页 > 其它

对集合{1, 2, 3, …, n}中的数进行全排列,可以得到 n!个不同的排列方式

2013-10-07 10:42 302 查看
题目如下:

. 对集合{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
='\0';

while(k-->0){
next_permutation(ch,ch+n);
}
cout << ch << endl;

delete []ch;
}
void main(){
print(3,5);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐