递归实现排列形枚举

2019/7/23 21:46:06 人评论 次浏览 分类:学习教程

递归实现排列形枚举
把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;//换下一个数字放在第一个位置
}
}

相关资讯

    暂无相关的资讯...

共有访客发表了评论 网友评论

验证码: 看不清楚?
    -->