| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3132 人关注过本帖
标题:[思考][题目]算法需要你来注入
只看楼主 加入收藏
阿一2004
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2004-7-24
收藏
得分:0 

呵呵,

有一个简单的方法可否?

如果K=3

就把最后的结果除以3,如果K=N,就把最后的结果除以N???

(我不懂算法,行外人,有不对的地方请指出)

2004-07-24 16:47
碎方脸
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2004-7-24
收藏
得分:0 

我想的是三个for的嵌套

嵌套中判断第1.2.3个数是否相等

我只是这么想的,还没有付出实际行动

我在xp下不能编

2004-07-24 19:51
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
收藏
得分:0 
以下是引用碎方脸在2004-07-24 19:51:54的发言:

我想的是三个for的嵌套

嵌套中判断第1.2.3个数是否相等

我只是这么想的,还没有付出实际行动

我在xp下不能编

你在XP下不能编?应该不会吧,你用的是什么编译器?

这个想法 神vLinux飘飘已经提到过了,但这只能解决分3份的问题,要是我让你分4份或

更多呢? 再想想。


我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2004-07-24 20:00
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

以N=100,K=5为例:

一, 每份至少为1,所以N-K=95只有这个数是可改变的,即,

1,1,1,1,1 这是必须且可予先分配的

二,那么有,

1+95,1,1,1,1

1+94,1+1,1,1,1

1+93,1+2,1,1,1

1+93,1+1,1+1,1

1+92,1+3,1,1,1

1+92,1+2,1+1,1,1

1+92,1+1,1+1,1+1,1(这个注意,后一个+的数字 不能大过前一个,避免重复的关键,即1+92,1+1,1+2,1,1是重复的)

。。。。。。。

到此,两个字--------递规


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-07-24 20:22
碎方脸
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2004-7-24
收藏
得分:0 

不是

我是在xp下装不上vc++6.0

但在2000下就可以

神奇

2004-07-24 21:04
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
以下是引用碎方脸在2004-07-24 21:04:49的发言:

不是

我是在xp下装不上vc++6.0

但在2000下就可以

神奇

同志,建议你去找个java虚拟机来安装!

这个是因为微软被告垄断罪,结果在XP没有捆绑java虚拟机,你随便找个软件网下个来装就是了

2004-07-24 21:08
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

to knocker:

谢谢,想了我好久!我一开始就想到用递归,但是不知道怎么实现, 而后来神朋友的算法我也想了,太局限,避免重复的关键我错, 我开始是想把得到的所有可能拿出来排序然后比较,这样虽然可以实现重复比较, 但实在笨,想来想去,只有递归可以不用再比较。

具体怎么实现呢?是先动态申请数组,然后呢?递归用的函数怎么实现?

PS: 大哥你的个人主页怎么上不了?!

[此贴子已经被作者于2004-07-24 21:22:57编辑过]

2004-07-24 21:18
阿一2004
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2004-7-24
收藏
得分:0 

事实上我还是想到方法了:

就以521三个数组成的8为例,有以下几个可能:125,152, 215,251,512,521。

一共六种,按题意,这六种方法是不能重复的,只能算是一种分法,

实际上,这就是一个排列与组合的问题:

当K=3时,有六种不同的组合方法,

当K=4时,则有24种组合的方法,K=5呢??

关于组合的公式我想就不用我多说了吧,

嘻嘻,所以说,最后的算法还是不难的。

然后就是把穷举出来的结果再除以这个组合的个数就行了。*(希望没错)

2004-07-24 21:31
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
收藏
得分:0 

knocker的算法和我想的差不多——排序,递归

从第一个数开始搜索,保证后面搜到的数大于等于前面的就可以了

(递归时可以适当剪枝,确定一个比较好的搜索范围)

knocker真的好厉害,这个算法应该算最好的了。

有兴趣的朋友可以按这个算法编一个程序,贴上来,大家交流


我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2004-07-24 22:39
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

我还是比较同意 2004 的方法(我也是这样做的),但是从电脑程序的角度出发,knocker 的做法是很理想。

但是用排列组合公式好象就缺少了点编程的乐趣,完全变成了一道高中数学计算题。


淘宝杜琨
2004-07-25 00:39
快速回复:[思考][题目]算法需要你来注入
数据加载中...
 
   



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

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