首页 > 代码库 > 递归算法之全组合排列
递归算法之全组合排列
输入:
给定数据数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>
递归算法之全组合排列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。