本帖最后由 523066680 于 2015-6-12 18:41 编辑
上面两段代码都是职业程序员解的。
啃了半晌发现都是:假设-> 计算对比 -> 调整答案 的方法逐步逼近
区别好像是广度优先 和 深度优先,效率好高,可惜各算出一种结果就结束了- Array [ 1, 11, 1, 1, 1, 1, 1, 1, 1, 1 ]
- Array [ 1, 12, 1, 1, 1, 1, 1, 1, 1, 1 ]
- Array [ 1, 11, 2, 1, 1, 1, 1, 1, 1, 1 ]
复制代码 这种算法一开始假定结果是:[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]
加上命题中的1一共11个1,其余数字各1,得到:[ 1, 11, 1, 1, 1, 1, 1, 1, 1, 1 ]
重新统计,一共12个1,其余各1:[ 1, 12, 1, 1, 1, 1, 1, 1, 1, 1 ]
重新统计,11个1,2个2,得 :[ 1, 11, 2, 1, 1, 1, 1, 1, 1, 1 ]
=- Array [ 11, 3, 1, 2, 1, 1, 1, 1, 1, 1 ]
- Array [ 1, 9, 2, 1, 1, 1, 1, 1, 1, 2 ]
- Array [ 1, 8, 3, 2, 1, 1, 1, 1, 2, 1 ]
- Array [ 1, 7, 3, 2, 1, 1, 1, 2, 1, 1 ]
- Array [ 1, 7, 3, 2, 1, 1, 1, 2, 1, 1 ]
- "time: 0.008"
复制代码 这种是动态的进行逐个数字的统计:
一开始假设 答案是:[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
有11个0,将11计入内,3个1,1个2,2个3,其余各1 得到:[ 11, 3, 1, 2, 1, 1, 1, 1, 1, 1 ]
按上面的方式重新统计:1个0,9个1,2个2,... 2个9:[ 1, 9, 2, 1, 1, 1, 1, 1, 1, 2 ]
重复以上步骤N次后得到 [ 1, 7, 3, 2, 1, 1, 1, 2, 1, 1 ] |