全排列的C/C++实现
来源:互联网 发布:数据库面试宝典 编辑:程序博客网 时间:2024/05/18 09:14
全排列实现
#include <iostream>
#include <stdio.h>
#include <string>
#include <vector>
using namespace std;
template<typename T>
void perm(vector<T> list,int k, int m,vector<vector<T>> &resul)
{
inti;
if(k>m) {
resul.push_back(list);
}
else {
for(i= k ; i <=m;i++) {
if(i!=k){
//swap(list[k],list[i]);
Ttemp=list[k];
list[k]=list[i];
list[i]=temp;
}
perm(list,k+1,m,resul);
if(i!=k){
//swap(list[k],list[i]);
Ttemp=list[k];
list[k]=list[i];
list[i]=temp;
}
}
}
}
#define NN 4
int main(){
vector<int>nu;
inta[NN]={1,2,3,4};
for(int i=0;i<NN;i++)
nu.push_back(a[i]);
vector<vector<int>>re;
perm(nu,0,NN-1,re);
for(int i=0;i<re.size();i++)
{
for(int j=0;j<re[0].size();j++)
cout<<re[i][j];
cout<<"";
}
return0;
}
解释一下,采用的模板机制,可以对诸如vector<T>nu {0,1,2,3,4,5……},或者{a,b,c,d……},或者{ab,ac,dnd,mfd……}等采用递归方法进行全排列,并且将排列的结果保存在vector<vector<T>> re;
初学的菜鸟可以借鉴一下
- C语言实现的全排列算法
- C语言实现的全排列算法
- C++STL全排列的简单实现
- 全排列的C/C++实现
- 全排列C语言实现
- C语言实现全排列
- C语言实现全排列
- C语言实现全排列
- c++STl的全排列
- 全排列 递归实现 c 语言实现
- n个整数全排列的递归实现(C++)
- 【C语言】递归实现元素的全排列和子集
- 生成n个元素的全排列 C实现
- 数组全排列c语言实现
- c 语言实现全排列和组合
- C语言实现全排列算法
- 字符串全排列 C语言实现
- c语言编程实现数字全排列
- Android系统架构 五层结构
- 今年暑假不AC(贪心)
- PDO常用方法详解
- 206. Reverse Linked List(java)
- XMLHttpRequest cannot load的解决方法
- 全排列的C/C++实现
- JS--第八天
- java 泛型
- LeetCode-26-Remove Duplicates from Sorted Array(消除已排序数组中的重复元素)
- Nginx之location,rewrite,反向代理及负载均衡
- 数据结构——字典(JavaScript)
- Quick-cocos2dx,中关于table条件排序
- JAVA设计模式之单例模式
- 关于Java中的编程规约