锁定老帖子 主题:一道算法题
精华帖 (2) :: 良好帖 (16) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2010-09-16
BigInteger maxVal = sumArray[offset].add(p(9 - offset).multiply(n(SIZE - countSumArray[offset])));// 当前已存在值+可能存在的最大值
我感觉这句不太对啊,sumArray[offset]应该是相应个数的9-offset的21次方的和,那么在此条件下,最大值应该只能是 BigInteger maxVal = sumArray[offset].add(p(8 - offset).multiply(n(SIZE - countSumArray[offset]))); 不知对不对? |
|
返回顶楼 | |
发表时间:2010-09-17
最后修改:2010-09-17
SongChaoBin 写道 BigInteger maxVal = sumArray[offset].add(p(9 - offset).multiply(n(SIZE - countSumArray[offset])));// 当前已存在值+可能存在的最大值
我感觉这句不太对啊,sumArray[offset]应该是相应个数的9-offset的21次方的和,那么在此条件下,最大值应该只能是 BigInteger maxVal = sumArray[offset].add(p(8 - offset).multiply(n(SIZE - countSumArray[offset]))); 不知对不对? 你是对的! 但是这里放8是不行的,要考虑数据在最后位时,是没有后继值的.. 当然放9不会影响到程序结果. |
|
返回顶楼 | |
发表时间:2010-09-17
蔡华江 写道 娘的,是那里看到的说水仙花数最高位为34位,我就发现39位上还有两个解,
40位上没了。 注:百度害死人哟 人家说的是理论上嘛。。。。~支持百度,和谐万岁 |
|
返回顶楼 | |
发表时间:2010-09-17
最后修改:2010-09-17
|
|
返回顶楼 | |
发表时间:2010-09-17
最后修改:2010-09-17
我还是不明白,MAX / 9^21 个9的问题,为什么从这个角度考虑啊?
int s = SIZE < 10 ? 10 : SIZE; for (int i = 0; i <= s; i++) { ht.put("n_" + i, new BigInteger(String.valueOf(i))); } 这段我也不太明白 主要思路我不是很清楚,,郁闷 |
|
返回顶楼 | |
发表时间:2010-09-17
1927105 写道 我还是不明白,MAX / 9^21 个9的问题,为什么从这个角度考虑啊? int s = SIZE < 10 ? 10 : SIZE; for (int i = 0; i <= s; i++) { ht.put("n_" + i, new BigInteger(String.valueOf(i))); } 这段我也不太明白 主要思路我不是很清楚,,郁闷 这一个已经说过了,见20楼 第二个意思就是说,在缓存中存储1-SIZE的BigInteger形式。 n1->BigInteger 1 ... 但是最少要存储0-10这几位 |
|
返回顶楼 | |
发表时间:2010-09-17
LZ,
msn多少的加下我: shipengyan@qq.com |
|
返回顶楼 | |
发表时间:2010-09-17
ocaso1987@gmail.com
|
|
返回顶楼 | |
发表时间:2010-09-17
但我觉得可以稍微修改下,当offset为9时maxVal=minVal不就行了?
|
|
返回顶楼 | |
发表时间:2010-09-17
offset是一个浮标,表示你当前所判断的是0的个数。
这是一个全局的值。 而minVal与maxVal是局部值,仅用来判断当前的数组是否合法。 脱离了这个函数在进行是否回溯的判定上是没有什么作用的。 |
|
返回顶楼 | |