算法设计与分析 全排列的递归实现算法
2017-07-07 09:39
246 查看
2.全排列的递归实现算法。
输入:先输入要求输入的字符的个数,后依次输入(或随机生成)每个字符(不能仅仅是数字)。
输出:全排列的结果。
示例:输入:3 / * 2,输出:/ * 2 / 2 * * / 2 * 2 / 2 * / 2 / *
R的全排列可归纳递归定义如下:
C++版:
#include<iostream>
using namespace std;
void perm(int *a,int k,int m)
{
if(k==m)
{
for(int i=0;i<=m;i++)
cout<<a[i]<<" ";
}
else
{
for(int j=k;j<=m;j++)
{
swap(a[j],a[k]);
perm(a,k+1,m);
swap(a[j],a[k]);
}
}
}
int main()
{
int n;
char a[100];
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
perm(a,0,n-1);
cout<<endl;
return 0;
}
输入:先输入要求输入的字符的个数,后依次输入(或随机生成)每个字符(不能仅仅是数字)。
输出:全排列的结果。
示例:输入:3 / * 2,输出:/ * 2 / 2 * * / 2 * 2 / 2 * / 2 / *
R的全排列可归纳递归定义如下:
C++版:
#include<iostream>
using namespace std;
void perm(int *a,int k,int m)
{
if(k==m)
{
for(int i=0;i<=m;i++)
cout<<a[i]<<" ";
}
else
{
for(int j=k;j<=m;j++)
{
swap(a[j],a[k]);
perm(a,k+1,m);
swap(a[j],a[k]);
}
}
}
int main()
{
int n;
char a[100];
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
perm(a,0,n-1);
cout<<endl;
return 0;
}
相关文章推荐
- 使用递归实现全排列的算法
- 算法设计与分析 合并排序的递归实现算法
- 全排列的递归实现算法
- 算法设计与分析 Ackerman函数的递归实现算法
- 【算法】递归实现全排列
- 算法设计与分析 整数划分的递归实现算法
- 全排列(Perm)的递归实现算法
- 算法——全排列递归实现
- 求模(非递归)全排列算法——Javascript实现
- 非递归实现不重复序列的全排列(一)
- 全排列递归实现的讨论
- 非递归实现不重复序列的全排列(三)
- 汇编语言实现递归阶乘算法代码分析(8)
- 学习算法导论-插入查询(递归实现)
- 全排列算法递归实现(笔试题)
- 全排列的递归实现
- 非递归实现不重复序列的全排列(三)
- 0-1背包问题经典算法(递归实现)
- 全排列的算法与C语言实现
- 数据结构C#实现-二叉查找树的创建,查找,以及各种递归(非递归)遍历算法