本文主要是介绍全排列以及排列组合的输出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#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;
}
这篇关于全排列以及排列组合的输出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!