全排列问题
2012-08-26 17:10
239 查看
给定一组数,给出其全排列的算法
算法:递归
本质上可以用循环遍历代替,不过递归更加通用,且程序简单
源代码如下
#include<iostream.h>
#include<stdlib.h>
//using namespace std;
void Swap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}
void Perm(int list[],int k,int m)
{
if(k==m)
{
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(void)
{
int a[10]={0,1,2,3,4,5,6,7,8,9};
Perm(a,0,9);
}
算法:递归
本质上可以用循环遍历代替,不过递归更加通用,且程序简单
源代码如下
#include<iostream.h>
#include<stdlib.h>
//using namespace std;
void Swap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}
void Perm(int list[],int k,int m)
{
if(k==m)
{
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(void)
{
int a[10]={0,1,2,3,4,5,6,7,8,9};
Perm(a,0,9);
}
相关文章推荐
- Oracle SQL排列组合之组合问题
- 《剑指offer》刷题笔记(分解让复杂问题简单):字符串的排列
- #NOIP模拟赛#排列问题(DP)
- 考题一:研究对全排列着色的性质 问题 A: 首先需要生成 n 的全排列然后对 n 的全排列进行着色, 使得相邻的两个数只需用最少颜色就可以把相邻的两个数用那区分开. (这里相邻包含两层含义:同时在自然
- 排列组合问题,只有问题,欢迎牛人晒解法
- 一个数学排列问题
- 圆排列问题-回溯法
- 排列问题
- 含有重复元素的全排列问题
- 排列与组合问题
- 递归求排列问题
- 全排列问题 递归实现
- 0002算法笔记——【递归】排列问题,整数划分问题,Hanoi问题
- 有重复元素的排列问题
- html中ul元素水平排列问题
- 算法笔记——【递归】全排列问题
- [算法设计-字符的全排列问题]
- 寻找最大排列问题
- 含重复元素的排列问题
- 有关多重集合的排列和组合问题