全排列的递归和非递归实现(permutation)(C++)
来源:互联网 发布:网络推广是网络策划吗 编辑:程序博客网 时间:2024/04/28 02:51
全排列问题
具体问题描述和思路请参考这篇文章:
http://blog.csdn.net/morewindows/article/details/7370155/
以下是C++代码实现:
//Permutation1 和 permutation2 分别是基于递归和非递归的实现,都可以实现去除重复的排列//读者也可以自己提交之后到leetcode47 题提交以下,看自己写的对不对#include <iostream>#include <vector>#include <string>#include <algorithm>using namespace std;bool isswap(vector<int> &arr, int begin, int end){ for(int i = begin;i < end;i++){ if(arr[i] == arr[end]) return false; } return true;}void permutation1(vector<int> &arr, int start, int len, vector<vector<int>> &res){ if(start == len){ res.push_back(arr); return ; } for(int i = start; i <= len;i++){ if(isswap(arr, start, i) == true){ swap(arr[start], arr[i]); permutation1(arr, start+1, len, res); swap(arr[start], arr[i]); } }}void permutation2(vector<int> &arr, int start, int len, vector<vector<int>> &res){ sort(arr.begin(), arr.end()); res.push_back(arr); bool flag = false; int i, j, k; while(true){ for(i = len;i > start;i--){ if(arr[i-1] < arr[i]) break; } if(i == start) break; j = i - 1; for(k = len;k > j;k--){ if(arr[k] > arr[j]) break; } swap(arr[k], arr[j]); res.push_back(arr); sort(arr.begin()+j+1, arr.end()); }}int main(){ int arr1[4] = {1, 2, 3, 4}; vector<int> arr(arr1, arr1+4); vector<vector<int>> res; int start = 0; int len = 3; //permutation1(arr, start, len, res); permutation2(arr, start, len, res); for(unsigned int i = 0;i < res.size();i++){ for(unsigned int j = 0;j < res[i].size();j++){ cout<<res[i][j]<<" "; } cout<<endl; } getchar(); return 0;}
0 0
- 全排列的递归和非递归实现(permutation)(C++)
- 数字全排列的递归和非递归实现(C/C++)
- 全排列的递归和非递归的实现
- 字符串全排列的递归和非递归实现
- C#:通过递归和非递归算法实现按顺序输出的全排列
- 全排列(含递归和非递归的解法)
- 全排列(含递归和非递归的解法)
- 全排列(含递归和非递归的解法)
- 全排列(含递归和非递归的解法)
- 全排列(含递归和非递归的解法)
- 全排列(含递归和非递归的解法)
- 全排列(非递归和递归的方法)
- 全排列算法非递归实现和递归实现
- 全排列算法非递归实现和递归实现
- 全排列算法非递归实现和递归实现
- 全排列的非递归实现
- 全排列算法的非递归实现
- 全排列的非递归实现
- 《C#入门经典v6》读书笔记2 Windows编程
- linux下GDB教程(转)
- 初识CSS
- 英语的原理,用美国人的思维学英语
- 【XML】XML CDATA
- 全排列的递归和非递归实现(permutation)(C++)
- Dijkstra算法
- Scala模式匹配
- Leetcode Merge k Sorted Lists
- hibernate动态链接数据库配置文件问题
- 5、数据库“表”相关
- NYOJ 116 士兵杀敌(二)
- 矩阵特征值分解与奇异值分解含义解析及应用
- 17.合并两个排序的链表|剑指Offer