gpt4 book ai didi

java - Project Euler #14 输出的输出不正确

转载 作者:行者123 更新时间:2023-12-01 16:34:07 24 4
gpt4 key购买 nike

我正在尝试实现算法来解决 Project Euler Problem #14 ,它要求在给定范围内找到一个输出最大 Collat​​z 猜想序列长度的数字。我的代码如下:

import java.util.ArrayList;
class Collatz {
private static ArrayList<ArrayList<Long>> previousNums = new ArrayList();
public static int seqLen(int x) {
ArrayList<Long> colSeq = new ArrayList();
long val = x;
colSeq.add(val);
while (val > 1) {
if (val%2 == 0) {
val/=2;
if (val < previousNums.size()) /*used to check if index exists*/{
colSeq.addAll(previousNums.get((int)val));
break;
}
else colSeq.add(val);
}
else {
val = 3*val + 1;
if (val < previousNums.size()) {
colSeq.addAll(previousNums.get((int)val));
break;
}
else colSeq.add(val);
}
}
previousNums.add(colSeq);
return colSeq.size();
}
public static void main(String[] args) {
int greatestNum = 0;
long totalVal = 0;
for (int i = 0; i<=1000000; i++) {
int collatz = seqLen(i);
if (collatz > totalVal) {}
greatestNum = i;
totalVal = collatz;
}
System.out.println(greatestNum + " " + totalVal);
}
}

我得到的输出是

1000000 153

虽然这不是正确答案,但 153 是 100 万的正确序列长度。基于此,我可以假设我的 Collat​​z 猜想算法有效,但比较部分无效。但是,我实在找不到其他可以修改代码的地方。有任何想法吗?谢谢您,请原谅这可能是重复的(没有多少其他帖子有同样的问题)。

最佳答案

哇,问题只是语法错误。看来我没注意:

 if (collatz > totalVal) {}
greatestNum = i;
totalVal = collatz;

是的,没有用大括号将代码括起来。

关于java - Project Euler #14 输出的输出不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61996049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com