全排列的递归实现
2017-09-20 21:38
253 查看
算法思路:
(1)n个元素的全排列=(n-1个元素的全排列)+(另一个元素作为前缀);
(2)出口:如果只有一个元素的全排列,则说明已经排完,则输出数组;
(3)不断将每个元素放作第一个元素,然后将这个元素作为前缀,并将其余元素继续全排列,等到出口,出口出去后还需要还原数组;
代码:
(1)n个元素的全排列=(n-1个元素的全排列)+(另一个元素作为前缀);
(2)出口:如果只有一个元素的全排列,则说明已经排完,则输出数组;
(3)不断将每个元素放作第一个元素,然后将这个元素作为前缀,并将其余元素继续全排列,等到出口,出口出去后还需要还原数组;
代码:
#include<iostream> using namespace std; int arr[100]; void Swap(int a,int b){ int temp; temp=arr[a]; arr[a]=arr[b]; arr[b]=temp; } void Sort(int i,int N){ if(i==N){ for(int j=0;j<=N;j++) cout<<arr[j]<<' '; cout<<endl; return; } else{ for(int k=i;k<=N;k++){ Swap(i,k); Sort(i+1,N); Swap(i,k); } } } int main(){ int N; cin>>N; for(int i=0;i<N;i++) cin>>arr[i]; Sort(0,N-1); return 0; }
相关文章推荐
- 全排列(Perm)的递归实现算法
- 利用递归实现全排列
- 面试题------全排列的非递归和递归实现(含重复元素)
- 递归实现全排列
- 递归实现全排列(java版)
- 全排列---非递归实现
- 全排列——递归实现
- 使用递归实现数的全排列
- C--全排列的实现(递归方法) 傻子也能看懂的
- 全排列实现(递归,去重复,字典排序,stl实现)
- 全排列实现(递归实现深度优先搜索)
- 递归实现全排列
- 递归实现全排列
- 递归实现全排列
- 8.n个字符的全排列(递归实现)
- 递归实现n个不同字符的所有全排列
- C#:通过递归和非递归算法实现按顺序输出的全排列
- 递归实现全排列
- 递归实现元素全排列
- 【面试】阿里--Python递归实现全排列