论坛首页 Java企业应用论坛

一道算法题

浏览 16955 次
锁定老帖子 主题:一道算法题
精华帖 (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])));
不知对不对?
0 请登录后投票
   发表时间: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不会影响到程序结果.
0 请登录后投票
   发表时间:2010-09-17  
蔡华江 写道
娘的,是那里看到的说水仙花数最高位为34位,我就发现39位上还有两个解,
40位上没了。
注:百度害死人哟

人家说的是理论上嘛。。。。~支持百度,和谐万岁
0 请登录后投票
   发表时间:2010-09-17   最后修改:2010-09-17
推荐个贴子
http://www.iteye.com/topic/609049
0 请登录后投票
   发表时间: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)));
}
这段我也不太明白


主要思路我不是很清楚,,郁闷
0 请登录后投票
   发表时间: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这几位
0 请登录后投票
   发表时间:2010-09-17  
LZ,
msn多少的加下我:
shipengyan@qq.com
0 请登录后投票
   发表时间:2010-09-17  
ocaso1987@gmail.com
0 请登录后投票
   发表时间:2010-09-17  
但我觉得可以稍微修改下,当offset为9时maxVal=minVal不就行了?
0 请登录后投票
   发表时间:2010-09-17  
offset是一个浮标,表示你当前所判断的是0的个数。
这是一个全局的值。

而minVal与maxVal是局部值,仅用来判断当前的数组是否合法。
脱离了这个函数在进行是否回溯的判定上是没有什么作用的。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics