Problem14


1.package com.shui.mu.yao.io.algorithm;  
2.  
3.public class Problem14 {  
4.  
5.    public static void main(String[] args) {  
6.        long starttime = System.currentTimeMillis();  
7.        int start = 640000;/**10:123456789往上翻20再翻40..->640000--1280000*/  
8.        int end = 1000000;  
9.        int[] seed = new int[end];  
10.        int max = 0;  
11.        int digit = 0;  
12.        /**预热10W数据到arr里面 存储seed值*/  
13.        for (int i = 2; i < 10000; i++) {  
14.            find(end, seed, i);  
15.        }  
16.        for (int i = start; i < end; i++) {  
17.            int number=find(end, seed, i);  
18.            if (number > max) {  
19.                max = number;  
20.                digit = i;  
21.            }  
22.        }  
23.        System.out.println("digit: "+digit+"\t"+"maxCount:"+max);  
24.        System.out.println(System.currentTimeMillis() - starttime);  
25.          
26.  
27.    }  
28.  
29.    private static int find(int end, int[] seed, int i) {  
30.        long count = i;  
31.        int number = 0;  
32.        if(seed[i]>0)  
33.            return seed[i];  
34.        while (count != 1) {  
35.            if(count<end&&seed[(int) count]>0)  
36.            {  
37.                number+=seed[(int) count];  
38.                break;  
39.            }  
40.            if ((count & 0X0001) == 0) {  
41.                count = count >> 1;  
42.            } else {  
43.                count = (count << 1) + 1 + count;  
44.            }  
45.            number++;  
46.        }  
47.        seed[i]=number;  
48.        return number;  
49.    }  
50.      
51.  
52.}  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值