全排列
将全排列的元素模拟成拿在手里的卡牌,元素的位置模拟成箱子
#include <stdio.h>
int n,book[10],a[10];//book储存每个卡牌的状态;
void dfs(int step)//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)//当前扑克牌在手里;
{
a[step]=i;//将这张卡牌放进当前箱子中;
book[i]=1;//被放进去的卡牌状态改变
dfs(step+1);//进入下一个箱子;
book[i]=0;//卡牌状态改变;
}
}
return ;//
}
int main()
{
scanf("%d",&n);
dfs(1);
getchar();
getchar();
return 0;
}