| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 894 人关注过本帖
标题:请教一个n!列出的算法
只看楼主 加入收藏
lw8484654
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-12-1
收藏
 问题点数:0 回复次数:8 
请教一个n!列出的算法
现在有一个题目列出n!的排列
比如n=3;那么就有3*2*1=6种排列,分别是123,213,132,231,321,312
请问这样的算法这么弄呢?
搜索更多相关主题的帖子: 算法 
2006-09-26 21:04
cwande
Rank: 2
等 级:新手上路
威 望:3
帖 子:333
专家分:0
注 册:2006-8-18
收藏
得分:0 
递归,你可以去搜一下,网上很多这种资料的,
其实就是n的全排列.....

汗,都懒得写代码了.......... cheat了一个威望,哈.....
2006-09-26 21:31
xiaoyunhu
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-9-24
收藏
得分:0 

卢开橙的<<组合数学>>上有这个问题,即字典序生成全排列,去找找吧...


小晕乎
2006-09-27 15:56
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

倚天照海花无数,流水高山心自知。
2006-10-04 22:16
wangdong1027
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-1-20
收藏
得分:0 
那100的阶乘呢?
2007-01-20 21:30
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
以下是引用wangdong1027在2007-1-20 21:30:01的发言:
那100的阶乘呢?

这个要用高精度,看我以前写的一个求 十万!的程序,或许会对你有帮助(正常的变量达不到100!那么大,会出现结果错误)
http://bbs.bc-cn.net/viewthread.php?tid=108422&extra=&page=100#


My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-01-21 20:06
ispig
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-1-23
收藏
得分:0 
main()
{int n,j,z=1;
scanf("%d",&n); 输入n的值
for(j=1;j<=n;j++)
z=z*j;
} z为排序的结果
2007-01-23 01:15
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
int,这个太小了.
再说我们是在讨论复杂度.
而LZ说要全排列的程序,如果是个很大的数,我想任何的算法不能达到满意的效果.

倚天照海花无数,流水高山心自知。
2007-01-26 15:25
cedricporter
Rank: 1
等 级:新手上路
帖 子:49
专家分:3
注 册:2007-2-6
收藏
得分:0 

/////////////////////////////////////////////
// File Name: n!.cpp
/////////////////////////////////////////////

#include <iostream>

using namespace std;

int main()
{
int a[10001] = {0, 0};
int c, i, j, n, x;
c = 0;
a[1] = 1;
x =1 ;

cout << "Please input n:";
cin >> n;

////////////////////////////////////////////
// Main algorithm !!!!
////////////////////////////////////////////

for (i = 1; i <= n; i++)
{
for (j = 1; j <= x; j++)
{
a[j] *= i;
a[j] += c;
c = 0;
c = a[j]/10;
if (a[j]>= 10)
{
if (a[x] >= 10)
x++;
c = a[j] / 10;
a[j] %= 10;
}
}
}

////////////////////////////////////////////
// Output the answer
////////////////////////////////////////////

cout << n << "!=\n";
for(int k = x; k >= 1; k--)
cout << a[k];
cout << endl;

////////////////////////////////////////////
system("pause");

return 0;
}

/////////////////////////////////////////////
// QQ:414112390 Q群:7196588
// Cedric Porter [Stupid ET] 原創
/////////////////////////////////////////////


清脆的口琴聲﹏悠揚的旋律﹏然而︵每個音符︵?°都充滿了悲傷︵?°~↘
2007-02-21 09:19
快速回复:请教一个n!列出的算法
数据加载中...
 
   



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

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