현재 project euler(11)을 (를) 실행하려고 시도 중이고 테스트를 통해 문제가 발생했습니다.루프가 제대로 작동하지 않습니까? 또는 배열?
현재 텍스트 문서 대신 1에서 400까지의 숫자를 사용하고 있습니다. 그러나, 내가 프로그램을 실행할 때, 결과는 400 * 399가 아니다. * 396, 그것은 어이없는 숫자가 적다. 나는 내가 모자를 씌우는 문제가 int
에 있다고 생각한다. 그러나 내가 현재 long
으로 전환했을 때 여전히 음수를보고합니다. 분명히 결과가 범위를 벗어납니다.
모든 도움을 주시면 감사하겠습니다.
public class Euler11
{
public static void main(String[] args)
{
int[][] nums = new int[20][20];
int v = 0;
int h = 0;
long high = 0;
for(int i = 1; i <= 400; i++)
{
nums[h][v] = i;// replace i with reader
if(h == 19)
{
h = 0;
v++ ;
}
else
{
h++ ;
}
}
for(int y = 0; y <= 15; y++)
{
for(int x = 0; x <= 19; x++)
{
high = higher(high, nums[y][x], nums[y + 1][x], nums[y + 2][x],
nums[y + 3][x], nums[y + 4][x]);
}
}
System.out.print(high);
}
public static long higher(long high, int n1, int n2, int n3, int n4, int n5)
{
System.out.println(n1 + " " + n2 + " " + n3 + " " + n4 + " " + n5
+ " = " + (n1 * n2 * n3 * n4 * n5));
if(n1 * n2 * n3 * n4 * n5 > high)
{
//System.out.println(n1 + " " + n2 + " " + n3 + " " + n4 + " " + n5
//+ " = " + (n1 * n2 * n3 * n4 * n5));
return (n1 * n2 * n3 * n4 * n5);
}
else
{
return high;
}
}
}
감사합니다. 이제 프로그램이 작동합니다. 방금 모든 것을 만들었습니다. long
다음 필요할 때 int
으로 전송하십시오.
코드가 너무 많음 ... –
문제의 원인이되는 코드 부분을 잘라낼 수 있습니까? –