递归实现排列形枚举

递归实现排列形枚举
把1到n这n个数排成一行后随机打乱,输出所有可能的次序
代码:
int order[20];//按顺序依次记录被选择的整数
bool chosen[20];//标记被选择的整数
void calc(int k)
{
if(k=n+1)
{
for(int i=1;i<=n;i++)
printf("%d",order[i]);
puts("");
return;
}
for(int i=1;i<=n;i++)
{
if(chosen[i])
continue;
order[k]=i;
chosen[i]=1;//标记一填入的数字
calc(k+1);//第2,3,4,…,n个位置的数字(同一个位置)
chosen[i]=0;//换下一个数字放在第一个位置
}
}

上一篇:B - Parity


下一篇:Ubuntu安装Parity