#include <stdio.h>
#include <stdlib.h>
int a[10],book[10],n;//a代表几号盒子装哪个数字,n代表多少个数字,book代表这个盒子是否已经被占了
int m;//非全排列模式
//void dfs(int step)
//{
// int i;
// if(step==n+1)//所有盒子已经已经都被占了。
// {
// for(i=1;i<=n;i++)
// printf("%d",a[i]);//输入所有盒子中存在的数字
// printf("\n");
// return;
// }
// for(i=1;i<=n;i++)
// {
//
// if(book[i]==0)//表示i号扑克在手上
// {
// a[step]=i;//将数字放入盒子
// book[i]=1;//标上被占用标志
// dfs(step+1);//深度遍历
// book[i]=0;//又拿出来了。
// }
// }
// return;
//}
void dfs(int step)
{
int i;
if(step==n+1)//所有盒子已经已经都被占了。
{
for(i=1;i<=n;i++)
printf("%d",a[i]);//输入所有盒子中存在的数字
printf("\n");
return;
}
for(i=1;i<=m;i++)
{
if(book[i]==0)//表示i号扑克在手上
{
a[step]=i;//将数字放入盒子
book[i]=1;//标上被占用标志
dfs(step+1);//深度遍历
book[i]=0;//又拿出来了。
}
}
return;
}
int main()
{
scanf("%d",&m);//输入m,代表数字个数
scanf("%d",&n);
dfs(1);
return 0;
}
全排列以及排列组合的输出
最新推荐文章于 2024-06-29 05:43:33 发布