题目描述
全排列1到n
要求实现函数:
int p[20],vis[20];//请将数组也一同提交
void next_pre(int n,int x)//输出所有排列(n个数字,当前第x个位置) ,按字典序排序,下方有解释
void solve(int n){ //内部调用next_pre来运行
void next_pre(int n, int x);//函数声明
}
C/C++只能提交上面的代码及其函数和函数内容,否则编译错误
Java
函数原型
public static void dfs(int d,int n,int[] vis,int[] a)
(d 为排列的第几个数字, n为要求排的数字个数, vis用来表示哪些数字用过, a用来存放排列的数字)
// 温馨提示,d初始值为1
输出
n! 行所有排列
按字典序从小到大排列。
字典序:
对于数字1、2、3......n的排列,不同排列的先后关系是从左到右逐个比较对应的数字的先后来决定的。
例如对于5个数字的排列 12354和12345,排列12345在前,排列12354在后。
按照这样的规定,5个数字的所有的排列中最前面的是12345,最后面的是 54321。
如果第一个字母一样,那么比较第二个、第三个乃至后面的字母。如果比到最后两个单词不一样长(比如,sigh 和 sight),那么把短者排在前。
(引用百度百科)