首页 新闻 会员 周边 捐助

一个算法问题

0
[已解决问题] 解决于 2009-07-08 19:24

也是面试题,如何生成从1~n这n个数的所有的排列。。。我没想明白,有谁能指点一下?

问题补充: 就是用程序列出这n个数的全排列,比如n=2时,所有的排列依次是12,21,当n=3时,就是123,231,312,132,321,213
灰灰狼的主页 灰灰狼 | 初学一级 | 园豆:5
提问于:2009-07-07 17:43
< >
分享
最佳答案
0

        private static void Permutation(List<int> v, int m, int n)
{
int i;
if (m < n - 1)
{
Permutation(v, m
+ 1, n);
for (i = m + 1; i < n; i++)
{
Swap(v, m, i);
Permutation(v, m
+ 1, n);
Swap(v, m, i);
}
}
else
{
foreach (int vs in v)
{
Console.Write(vs);
}
Console.Write(
"\r\n");
}
}

private static void Swap(List<int> v, int m, int i)
{
int t;
t
= v[m]; v[m] = v[i]; v[i] = t;
}

调用方法:

List<int> v = new List<int> { 1, 2, 3};
Permutation(v, 0, 3);

Cheese | 小虾三级 |园豆:509 | 2009-07-08 13:01
其他回答(3)
0

什么意思,我没看明白

斯克迪亚 | 园豆:4124 (老鸟四级) | 2009-07-07 17:55
0

可以描述清楚吗?

Exception | 园豆:205 (菜鸟二级) | 2009-07-07 17:59
0

典型的全排列算法,给你个地址参考一下吧,直接用文字说明太多了点

http://www.diybl.com/course/4_webprogram/asp.net/asp_netshl/2008124/97113.html

Gray Zhang | 园豆:17610 (专家六级) | 2009-07-08 11:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册