UVa在线评判-3n + 1问题(答案错误)

时间:2014-03-30 15:52:11

标签: java

我很确定我的程序有效,因为它给出了与uv-output相同的结果。但它说我的回答是错误的。有些人可能知道这个网站。我还是初学者,没有经验,所以我希望得到一些帮助。也许是我想念那个问题的东西。 这是probelm链接>> (http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=3&problem=36&mosmsg=Submission+received+with+ID+13417700) 这是我的代码。

import java.io.*;
import java.util.Scanner;

class Main {
    public static void main(String[] args) throws FileNotFoundException  {
        Main myWork=new Main();
        File inputFile=new File("input.txt");
        if(inputFile.exists()){
            Scanner scan=new Scanner(inputFile);
            while(scan.hasNext()){
                int i=scan.nextInt();
                int j=scan.nextInt();
                int count =0;
                for(int x=i; x<=j;++x){ 
                    int y= myWork.doAlgorithem(x);
                    if(count <y)
                        count=y;

                }
                System.out.println(i+" "+j+" "+count);
            }}
        System.exit(0);
    }
    public static int doAlgorithem(int i)
    {
        int count=1;

        while( i != 1){
            if(i % 2 != 0){
                count++;
                i= i*3 +1;
            }
            else 
            {
                count++;
                i /=2;
            }
        }
        return count;
    }
}

1 个答案:

答案 0 :(得分:1)

我相信你的解决方案的问题在于你假设第一个整数总是小于第二个。

当你在竞赛中解决编程问题时,你应该从不做出任何假设。

尝试使用从here

中提取的这些案例的代码
1 10
100 200
201 210
900 1000
1000 900
999999 999990

输出应为:

1 10 20
100 200 125
201 210 89
900 1000 174
1000 900 174
999999 999990 259