全排列问题 递归实现
2012-10-31 21:29
260 查看
http://blog.csdn.net/hackbuteer1/article/details/7454252
10、下面程序的功能是输出数组的全排列,请填空。
解释如下:
perm有三个参数:
1.list,链表本身,
2.0,全排列的起始位置
3.sizeof(list)/sizeof(int)-1 全排列的结束位置
当k==m的时候,输出全排列
综上 (0.m)的全排列
(1,m)的全排列
(2,m)的全排列
(3,m)的全排列
。。
(m.m)的全排列
所以总有m!种方案
10、下面程序的功能是输出数组的全排列,请填空。
void perm(int list[],int k,int m) { if(_______) { copy(list,list+m,ostream_iterator<int>(cout," ")); cout<<endl; return ; } for(int i = k ; i <= m ; ++i) { swap(&list[k] , &list[i]); ______________; swap(&list[k] , &list[i]); } } void main() { int list[] = {1,2,3,4,5}; perm(list,0,sizeof(list)/sizeof(int)-1); }
解释如下:
perm有三个参数:
1.list,链表本身,
2.0,全排列的起始位置
3.sizeof(list)/sizeof(int)-1 全排列的结束位置
当k==m的时候,输出全排列
综上 (0.m)的全排列
(1,m)的全排列
(2,m)的全排列
(3,m)的全排列
。。
(m.m)的全排列
所以总有m!种方案
void swap(int& a,int &b) { int temp; temp=a; a=b; b=temp; } void perm(int list[],int k,int m) { if(k==m) { copy(list,list+m+1,ostream_iterator<int>(cout," ")); cout<<endl; return ; } for(int i = k ; i <= m ; ++i) { swap(list[k],list[i]); perm(list,k+1,m); swap(list[k],list[i]); } } void main() { int list[] = {1,2,3,4,5}; perm(list,0,sizeof(list)/sizeof(int)-1); }
相关文章推荐
- 全排列问题算法实现--递归
- 全排列问题算法分析与实现(递归、非递归)
- 多个数组间元素排列组合问题求解(Java实现) 标签: 递归排列组合循环
- 递归实现排列组合问题
- 全排列算法递归及STL实现,八皇后问题
- 递归实现排列组合问题
- 集合的全排列问题-递归实现方式的改进---旋转法
- 递归实现全排列问题
- 全排列问题的递归、STL实现
- 全排列问题递归实现
- 递归实现字母的排列问题
- Java 非递归实现的排列组合中的平均分组问题
- 八皇后问题—递归实现
- 递归与分治——排列问题
- 递归-排列问题
- 迷宫问题--非递归回溯 C语言实现
- [Java实现]Filbonacci斐波那契数列递归带来的问题和改进
- 递归求解几类排列组合问题(四、普通选择性组合排列)
- 打靶问题c++代码递归实现——程序员面试宝典
- 01算法笔记——【递归】排列问题,整数划分问题,Hanoi问题