全排列问题算法实现--递归
2017-07-02 10:45
323 查看
/* 设R={r1,r2,...rn}是要进行排列的n个元素.Ri=R-{ri}.集合X中元素的全排列记为 Perm(X).(ri)Perm(X)表示在全排列Perm(X)的每一个排列前加上前缀ri得到的排列 R的全排列可归纳定义如下: 当n=1时,Perm(R)=(r),其中r是集合R中唯一的元素; 当r>1时,Perm(R)由(r1)Perm(r1),(r2)Perm(r2).....(rn)Perm(rn)构成. 依此递归定义,Perm(R)的递归算法如下: */ #include <iostream> #include <algorithm> using namespace std; int cnt = 0; Perm(int list[],int k,int m){ if(k == m){ cnt++; cout<<"cnt = "<<cnt<<endl; for(int i = 0 ; i <= m ; i++){ cout<<list[i]<<" "; } cout<<endl; } else{ for(int i = k ; i <= m; i++){ swap(list[k],list[i]); Perm(list,k+1,m); swap(list[k],list[i]); } } } int main(){ int x[] = {1,2,3,4,5}; cout<<"this is a test"<<endl; Perm(x,0,4); }
相关文章推荐
- 全排列问题算法分析与实现(递归、非递归)
- 全排列算法递归及STL实现,八皇后问题
- 常用算法的递归实现问题分析(针对《数据结构与程序设计》by Robert.L.Kruse)
- 全排列算法非递归实现和递归实现
- c语言实现排列组合算法问题
- c语言实现排列组合算法问题
- C语言实现的排列组合问题的通用算法、解决方法
- 【自写】【求全排列】【新算法】【递归实现】
- 全排列算法原理和实现-----用递归方式实现
- 算法java实现--回溯法--圆排列问题--排列树
- 一个简洁的全排列算法--递归实现
- 0002算法笔记——【递归】排列问题,整数划分问题,Hanoi问题
- 全排列算法递归实现
- 经典递归算法之排列,组合,集合和换零钱, Python yield实现.
- 0-1背包问题经典算法(递归实现)
- 递归实现hanoi塔问题算法
- 全排列问题 递归实现
- 0002算法笔记——【递归】排列问题,整数划分问题,Hanoi问题
- 用递归法:设计算法求解汉诺塔问题,并编程实现。 (1) Hanoi(汉诺)塔问题分析 这是一个古典的数学问题,是一个用递归方法解题的典型例子。问题是这样的:古代有一个梵塔,塔内有3个座 A,B,C
- 全排列问题的递归、STL实现