本帖最后由 lee1892 于 2013-9-3 11:20 编辑
感谢各位参与,楼上有重复发贴的,均以最后一贴为准,所得运行结果如下:[code=vb]ID: <大灰狼1976>
Result: 13, 144, 1370, 96394, 1427537, 98274986,
Time: 0.000s
ID: zhyj_88
Result: 13, 144, 1370, 96394, 1427537, 98274986, 4243218150
Time: 0.016s
ID: xiaofx11
Result: 13, 144, 1370, 96394, 1427537, 98274986,
Time: 0.000s
ID: <清风_ll>
Result: 13, 144, 1370, 96394, 1427537, 98274986,
Time: 0.020s
ID: wcymiss
Result: 13, 144, 1370, 96394, 1427537, 98274986, 4243218150
Time: 0.000s
ID: 小花鹿
Result: 13, 144, 1370, 96394, 1427537, 98274986
Time: 11.066s
ID: <yuanhongly>
Result: 13, 144, 1370, 96394, 1427537, 98274986, 4243218150
Time: 0.016s
ID: xzk235
Result: 13, 144, 1370, 96394, 1427537, 98274986, 4243218150
Time: 0.016s
ID: hellohaha
Result: 13, 144, 1370, 96394, 1427537, 98274986
Time: 9.555s
ID: <huahua2005>
Result: 13, 144, 1370, 96394, 1427537, 98274986
Time: 1.234s
ID: Bodhidharma
Result: 13, 144, 1370, 96394, 1427537, 98274986, 4243218150
Time: 0.750s
ID: <JsXjd>
Result: 13, 144, 1370, 96394, 1427537, 98274986, 4243218150, 54563
Time: 0.000s
ID: <JsXjd2>
Result: 13, 144, 1370, 96394, 1427537, 98274986, 4243218150, 54563
Time: 0.000s
ID: <minjiwei>
Result: 13, 144, 1370, 96394, 1427537, 98274986
Time: 5.559s
ID: <delete_007>
Result: 13, 144, 1370, 96394, 1427537, 98274986, 4243218150
Time: 0.000s
=======================
' Not included in the attachement:
ID: 5blessyou
Result: 13, 144, 1370, 96394, 1427537, 98274986
Time: 6.275s
[/code]我个人认为的评分如下:
ID | 正确结果分 | 1秒内计算分 | 可于0.1秒内计算10^9分 | 优秀追加分 | 合计得分 | 备注 | 大灰狼1976 | √ | √ | 变量类型限制 | √ | 3 | 巧妙的字典使用 | zhyj_88 | × | √ | √ | × | 2 | 看花眼了,代码不自证
11出错 | xiaofx11 | √ | √ | 变量类型限制 |
| 2 | 代码自证,但未得前3分 | 清风_ll | √ | √ | 变量类型限制 |
| 2 | | wcymiss | √ | √ | √ |
| 3 |
| 小花鹿 | √ | 超时 | 超时 |
| 1 | | yuanhongly | √ | √ | √ |
| 3 |
| xzk235 | × | √ | √ | × | 2 | 代码自证
11出错,按之前原则未得前3分 | hellohaha | √ | 超时 | 超时 |
| 1 | | huahua2005 | √ | 超时 | 超时 |
| 1 | | Bodhidharma | √ | √ | 超时 |
| 2 | 代码自证,但未得前3分 | JsXjd | × | √ | √ |
| 2 | 11出错 | minjiwei | √ | 超时 | 超时 |
| 1 | 代码自证,但未得前3分 | delete_007 | √ | √ | √ |
| 3 | | 5blessyou | √ | 超时 | 超时 | | 1 | |
这是一个非常简单的利用递归或则迭代均可以得到答案的题目。
1、速度:为了达到题目要求的速度,一个简单而行之有效的方法是所谓的空间换时间,即将中间计算结果保留的内存中,以避免重复计算从而达到提速的效果。大多数同学都采用了字典对象,实际上用数组也能达到目的。
2、自证:貌似所有同学都不约而同的选择2、3、4的最小公倍数作为收敛退出条件,结果虽然正确,但我个人是反对的。理由是代码不能自证,或则将1~12的结果在帖子里列出来并证明“大于12的所有数均满足除2、3、4的和大于自身”,但没人这么做。正确的递归退出条件应当是nCoin=0 OR nCoin >= INT(nCoin/2) + INT(nCoin/3) + INT(nCoin/4),此时递归返回值亦为0 | nCoin。
题目最初的设想是锻炼递归思维、变量类型的正确使用、代码加速技巧。
由于题目比较简单,我所准备的代码与大家大同小异,就不另贴了,呵呵~
====================================
ON 2013.09.02 REV. 1
鉴于有同学十分不满意,多说两句。
请自行仔细审题,题目中从未提到速度是评分的主要因素,充其量是个限制条件。
实际上从逻辑上而言,凡未出现类似 If nCoin >= INT(nCoin / 2) + INT(nCoin / 3) + INT(nCoin / 4) Then ... 的,使得代码能够按题意自证的,均可判错(我个人如此认为)。
如认为迭代实现比递归实现难度大的,请学习2楼大灰狼同学的代码,另外这与本题的评分标准无关。
====================================
ON 2013.09.03 REV. 2
版主说了,发现问题要改正,所以有问题的三人各少1分,呵呵~xzk同学按之前未得前3分原则,则代码自证的追加分也木有了~
|