#include<cstdio>
int p[99], hashtable[99] = {false}, n;//数组p存储当前的排列,用hashtable[i]的真(/假)表示数i在当前排列p中出现(/没出现)过
//当前处理排列的第index位
void solvep(int index){
if(index == n + 1){ //递归边界,已处理了前n位
for(int i = 1; i <= n; i++) //输出当前数列
printf("%d", p[i]);
printf("\n");
return;
}
for(int i = 1; i <= n; i++){ //试图将1~n填入第index位中
if(hashtable[i] == false){
p[index] = i;
hashtable[i] = true;
solvep(index + 1);
hashtable[i] = false;
}
}
}
int main(){
n = 4;
solvep(1);
return 0;
}
来源:CSDN
作者:阿斯蒂芬解开了
链接:https://blog.csdn.net/z_nemo/article/details/104259846