输入:
给定数据数N,然后输入n个数字,找出所有的排列数。
输出:
输出所有的排列数。
样例输入:
3
1 2 3
样例输出:
123
132
213
231
312
321
思路:
也是递归求解的典例。
代码如下:
<span style="font-size:14px;">#include<stdio.h> #include<string.h> int a[110],b[110],c[110]; int n; void res(int len) { if(len>=n)//递归结束条件 { for(int i=0;i<n;i++) printf("%d",c[i]); puts(""); return ; } for(int i=0;i<n;i++) { if(!b[i])//通过b[i]来判断是否出现过一次 { b[i]=1; c[len]=a[i];//将值复制给数组C c[i]用于输出数据 res(len+1);//进行一系列递归 b[i]=0;//保证后面的能输出多组数据 } } } int main() { while(~scanf("%d",&n)) { for(int i=0;i<n;i++) scanf("%d",&a[i]);//a[i]用来暂时存储元素 memset(b,0,sizeof(b));//初始化 ,b[i]用来标记 res(0); } return 0; }</span>
原文:http://blog.csdn.net/ice_alone/article/details/39379673