对集合{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函数,代码如下:
. 对集合{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); }
相关文章推荐
- 对n个不同正数进行排列,一共有多少种排列方式
- mget(可以通过索引、类型、或ID一次得到同一索引或不同索引库里的文档集合) & mapping
- 迭代器foreach可以指定同个集合的不同的迭代实现方式
- 关于6元钱可以由1角、2角、5角、1元的以不同的组合方式进行组合
- 微软100题第46题:四对括号可以有多少种匹配排列方式?
- 在使用MyEclipse新建文件时常常有些不需要的冗余代码可以采用如下方式进行更改
- RC57减速机输入方式的不同可以分为RCL57、RCW57
- “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。
- 获取系统URL访问的前三名(通过Scala方式实现/通过Spark方式实现),Spark将URL访问日志进行分类并通过自定义Partitioner的方式将文件写入到不同分区上
- 不同方式遍历Map集合
- 使用SendMessage方法对窗体上的控件进行截图,该方法的思想就是把控件的句柄拿到,对控件发送WM_PAINT消息,并且把希望得到图形对象的句柄当作wParam参数传过去,这样就可以在图形对象得到想要得图形。
- 使用SQL Server 2005 新的语法ROW_NUMBER()进行分页的两种不同方式的性能比较
- 读取Properties配置文件, 四种方式都可以得到webroot/WEB-INF/classes这个路径
- 不同方式遍历Map集合
- 46 四对括号可以有多少种匹配排列方式
- PL/SQL可以连oracle,但是jdbc连不上,原来是因为url链接方式不同 格式不一样
- js根据不同的方式进行查找结点
- poj 3678 Katu Puzzle 2-SAT 有n个变量,每个可以取0或者1,再给出m组关系,每组关系都是两个变量进行运算可以得到的结果,运算有AND OR XOR三种,问能否满足这些关系,
- 采用递归方式输出N个不同元素所有排列方式
- Ajax使用JSON将对象、集合传递给后台的方式(用于同时对多个对象进行修改)