标题:[求助]试设计一个递归算法,产生n!个不同的全排列
取消只看楼主
shohokuooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:93
专家分:0
注 册:2005-1-29
 问题点数:0 回复次数:3 
[求助]试设计一个递归算法,产生n!个不同的全排列
如题:设计一个递归算法,产生n!个不同的全排列
(注意:是n!个不同的全排列,不是求n!的数值)
不要求写出原代码用类C写写算法就可以,我只想知道算法,谢谢大家!
有能力的帮帮在下,不胜感谢!
搜索更多相关主题的帖子: 递归算法 排列 设计 数值 
2007-10-11 08:43
shohokuooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:93
专家分:0
注 册:2005-1-29
得分:0 
?
斑竹的答案?

2007-10-11 10:21
shohokuooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:93
专家分:0
注 册:2005-1-29
得分:0 

斑竹的说法我怎么觉得像循环呢?
以下是我从网上找的算法,不过不是太懂.
#include <stdio.h>
void permutation(char a[], int m, int n)
{
int i;
char t;
if (m<n-1) {
permutation(a, m+1, n);
for (i=m+1;i<n;i++) {
t=a[m]; a[m]=a[i]; a[i]=t;
permutation(a, m+1, n);
t=a[m]; a[m]=a[i]; a[i]=t;
}
} else
{
printf("%s ", a);
}
}
int main() {
char a[]="ABCDE";
permutation(a, 0,5);
return 0;
}


2007-10-11 21:50
shohokuooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:93
专家分:0
注 册:2005-1-29
得分:0 
还有一个简单点的:
void genPermutation(int k, int n, int* perm) {
if (k >= n) {
for (int i = 0; i < n; ++i) {
cout << perm[i] << " ";
}
cout << endl;
}
for (int i = k; i < n; ++i) {
swap(perm[i], perm[k]);
genPermutation(k + 1, n, perm);
swap(perm[i], perm[k]);
}
}

2007-10-11 21:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-176595-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.283579 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved