Итак, я работал над proj euler 8 и в итоге получил разочарование и обманул. Я видел ответ, который я нашел https://github.com/nayuki/Project-Euler-solutions/blob/master/java/p008.java работал так же, как и с другим кодом, но всякий раз, когда у меня был другой ответ.Тот же код, другой ответ? Project Euler8
Итак, я сменил строки и начал копировать свой код, чтобы увидеть, где был недостаток, но в конце концов, когда я все изменил и сделал свой код таким же, как и его (с разными именами переменных), у меня все еще есть другое ответ. Может ли кто-нибудь объяснить мне, почему это происходит? Первый - это мой код, второй - его.
public class Attempt {
public static void main (String[] args) {
System.out.println(new Attempt().getAnswer());
}
private static final String BIG_NUMBER = "I copied and pasted his number here, so no difference. I won't write it out since it's 1000 digits."
private static final int ADJACENT = 13;
public String getAnswer() {
long highest = -1;
for (int i = 0; i + ADJACENT <=BIG_NUMBER.length(); i++) {
long currentProduct = 1;
for (int thirteen = 1; thirteen < ADJACENT; thirteen++)
currentProduct *= BIG_NUMBER.charAt(i + thirteen) '0';
highest = Math.max(currentProduct, highest);
}
return Long.toString(highest);
}
}
public class Cheat {
public static void main(String[] args) {
System.out.println(new Cheat().run());
}
private static final String NUMBER = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801$
private static final int ADJACENT = 13;
public String run() {
long maxProd = -1;
for (int i = 0; i + ADJACENT <= NUMBER.length(); i++) {
long prod = 1;
for (int j = 0; j < ADJACENT; j++)
prod *= NUMBER.charAt(i + j) - '0';
maxProd = Math.max(prod, maxProd);
}
return Long.toString(maxProd);
}
}
«_my code то же, что и его_». Один цикл начинается с 0, другой начинается с 1. Коды не совпадают. – csmckelvey
Ваш код даже не компилируется: 'currentProduct * = BIG_NUMBER.charAt (i + thirteen) '0';' это довольно значительная разница. – Bohemian