UVa 3n + 1的错误答案

时间:2016-05-03 01:49:11

标签: java onlinejudge

我试图提交多次,但我得错了答案。 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=36 我在网站上找到了一个与我的代码完全相同的解决方案,所以我提交了他的确认,它被接受了。 任何人都可以告诉我代码中可能有什么问题吗?

import java.util.Scanner;

class Main
{
public static void main(String[] args) 
{
    Scanner input = new Scanner(System.in);

    int count, max_count = 0;

    while(input.hasNext())
    {
        //get input
        int i = input.nextInt();
        int j = input.nextInt();

        int k = Math.min(i, j);
        while(k <= Math.max(i, j))
        {
            count = findCycleLength(k);

            if(count > max_count)
                max_count = count;

            k++;
        }
        System.out.printf("%d %d %d\n", i, j, max_count);
    }

} //end main

private static int findCycleLength(int n)
{
    int length = 1;
    while(n != 1)
    {
        if(n%2 == 1)
            n = 3*n + 1;
        else
            n /= 2;

        length += 1;
    }

    return length;
}

}

1 个答案:

答案 0 :(得分:0)

您必须为每个测试用例初始化max_count

尝试在max_count = 0;之前添加while(k <= Math.max(i, j))