递归实现n个不同字符的所有全排列
2016-05-13 20:50
267 查看
设str是含有n个不同字符的数组例如含123,perm(str,k,n)为str[k]~str[n-1]的所有字符全排序输出函数。很明显,perm(str,k+1,n)处理的字符个数比perm(str,k,n)处理的字符个数少一个。假定perm(str,k+1,n)可求,对于第k个位置可以任取k~n-1内任意元素作为str[k],再组合perm(str,k+1,n)得到perm(str,k,n)。
由此建立递归模型:
if k==n-1 输出str
else 任取k~n-1内任意元素作为str[k]+perm(str,k+1,n)
由此建立递归模型:
if k==n-1 输出str
else 任取k~n-1内任意元素作为str[k]+perm(str,k+1,n)
void perm(int a[],int k,int n){ int i,j; if(k==n-1){for(i=0;i<n;i++)cout<<a[i]<<" ";cout<<endl;} else{ for(i=k;i<n;i++){ int t;t=a[k];a[k]=a[i];a[i]=t;//任取k-(n-1) perm(a,k+1,n); t=a[k];a[k]=a[i];a[i]=t;//还原k-(n-1)以得到原始数组,下次再任取 } } }
相关文章推荐
- Android 最优轮循(心跳策略)探究实践
- 写了个简单的摸拟alert\提示框,有需要可以拿去用.
- beanUtils操作javabean
- 【水题】HDU1014Uniform Generator
- Oracle中sql语言简洁教程----不动产数据迁移篇
- 下拉刷新+上拉加载+xml解析
- HDU 4336 Card Collector 概率dp 状态压缩
- Qt操作工具条
- URAL1057_Amount Of Degrees
- 2013年第四届蓝桥杯C/C++程序设计本科B组决赛 连续奇数和(结果填空)
- 判断输入的年月日是否合法,并指出是闰年还是平年
- oldlinux 新老论坛索引对照表
- 蓝桥杯:大小写转换
- 第三方库SDWebImage的原理
- extern 和static学习
- 典型用户及用户场景描述
- TDEngine游戏平台框架逻辑
- leetcode.210. Course Schedule II
- hdu1848Fibonacci again and again
- (OK) Docker中使用固定IP——docker run -i -t --rm --net='none'