我最近开始尝试完成一些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,因此我不断地使用一个而不是增加2,3等等。
答案 0 :(得分:2)
你的内部循环将始终确保a == 1
结束时(因为它在a != 1
时循环,因此它仅在a == 1
时结束)。然后,您的外循环在重复之前递增a
。这就是为什么你总是递增1
。因此,除非b == 2
,否则总是会卡住。
答案 1 :(得分:0)
这里是实际问题,样本输入和样本输出的链接..
http://uva.onlinejudge.org/external/1/100.pdf
但是谢谢你们,为了解决这个问题......我必须初始化一个新的变量。