Chinaunix

标题: [Funny]给大家出一道题 [打印本页]

作者: 韩三普    时间: 2006-01-02 17:13
标题: [Funny]给大家出一道题
有33个数字,假设为a,b,c,d,e,f…x,y,z,A,B,C,D,E,F,G,
任意选取其中的6个,让这6个数字的和等于一个固定值(假设为sum),找出满足条件的6个数字的所有组合。所有数的值均为正整数,包括0。
程序的效果为:依次输入a到G的数值,再输入sum的值,程序计算后,将任意6个数之和等于sum的组合全部列出。
例如:输入1,0,1,0,1,0,1,2,2,1,4,0,1,2,2,1,1,1,2,1,2,1,0,1,2,1,2,1,1,1,1,2,1。然后再输入4,计算得出:
a+b+c+d+e+g=sum
a+b+c+d+f+h=sum
   .等等
程序结果为:将这些组合全部列出。


这道题用PHP来处理,显示出了PHP的不足,证明PHP在运算方面表现不佳。有兴趣的可以做一做,说明一下,一般的电脑算完可能要10分钟以上,有谁能写出低于10分钟的算法发表出来,教教俺,俺的PC配置是CM1.5,512DDR.
作者: litie123    时间: 2006-01-02 17:41
提示: 作者被禁止或删除 内容自动屏蔽
作者: ydlhero    时间: 2006-01-02 18:02
原帖由 litie123 于 2006-1-2 17:41 发表
作个记号。

要是放在俺们公司的服务器上,应该不到5分钟就搞定吧,呵呵


啥配置?

先站个位^_^
作者: HonestQiao    时间: 2006-01-02 20:54
原帖由 韩三普 于 2006-1-2 17:13 发表
有33个数字,假设为a,b,c,d,e,f…x,y,z,A,B,C,D,E,F,G,
任意选取其中的6个,让这6个数字的和等于一个固定值(假设为sum),找出满足条件的6个数字的所有组合。所有数的值均为正整数,包括0。
程序的效果为:依 ...



我想到的一个方法,先把输入的数据整到数组,然后合并重复项,然后根据最后的数字序列,来生成可能的组合,最后返回到原始数据进行匹配。;例如使用正则。

不过,你的这一个,如果作为php运算能力不佳,似乎非常牵强。

1. 没有对比测试
2. 做你这样子的测试,算法是非常重要的,算法的好坏可能导致运行效率成倍的变化。
作者: crazysoul    时间: 2006-01-02 21:12
看这有点像某个编码的字符映射表。要做暴力破解字典?
如果嫌PHP若的话干脆生成HTML让客户机的JS来算,算好结果再POST回服务器:)




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2