0

我最近开始尝试完成一些 UVA 问题,但我遇到了第一个问题。问题是 3n + 1。我已经取得了一些进展,几乎完成了除了增量之外的所有要求。

InputStreamReader inputStream = new InputStreamReader(System.in);
BufferedReader buffReader = new BufferedReader(inputStream);

try 
{ 
    String input = buffReader.readLine();
    String[] brokenArray = input.split("\\s");
    int a = Integer.parseInt(brokenArray[0]);
    int b = Integer.parseInt(brokenArray[1]); 
    int c = 1;
    System.out.print(a +" "+b+" "); 

    //if( a <= b )

    while ( a!= b) {
        while (a != 1) { 
            if((a%2)!= 0) {
                c++;
                a = 3*a+1;
            } else {
                c++;
                a = a/2;
            } 
        }
        System.out.println(c); 
        **a ++;**   
    }

所以基本上它应该接受2个输入并运行一个计数,这是所执行操作的c..但是在它完成对一个数字的操作计数之后,它必须移动到第二个数字,因此我放了一个增量来移动到下一个。它第一次递增,但底部的变量 a 保持为 1,因此我不断递增 1 而不是递增 2、3 等。

4

2 回答 2

2

您的内部循环将始终确保它a == 1何时结束(因为它循环 while a != 1,所以它仅在何时结束a == 1)。然后,您的外部循环a在重复之前递增。这就是为什么你总是在递增1。所以,除非 ,否则b == 2总是会被卡住。

于 2013-07-24T00:25:04.550 回答
0

好吧,这里是实际问题、示例输入和示例输出的链接。

http://uva.onlinejudge.org/external/1/100.pdf

但谢谢大家,为解决这个问题..我必须初始化一个新变量。

于 2013-07-24T14:35:35.757 回答