projectEuler pro11
Problem 11
In the 2020 grid below, four numbers along a diagonal line have been marked in red.
08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48
The product of these numbers is 26 63 78 14 = 1788696.
What is the greatest product of four adjacent numbers in the same direction (up, down, left, right, or diagonally) in the 2020 grid?
import java.util.Scanner;
public class P011 {
public static void main(String[] args){
int[][] d = new int[20][20];
Scanner s = new Scanner(System.in);
for(int i=0;i<20;i++){
for(int j = 0;j<20;j++){
d[i][j] = s.nextInt();
}
}
long heng = 0,zong = 0,xie = 0;
int i = 0,j=0;
for(i = 0;i<20;i++){
for( j =0;j<20;j++){
if(i<17&&j<17){
heng =Math.max(d[i][j]*d[i][j+1]*d[i][j+2]*d[i][j+3],heng);
zong = Math.max(d[i][j]*d[i+1][j]*d[i+2][j]*d[i+3][j],zong);
xie = Math.max(d[i][j]*d[i+1][j+1]*d[i+2][j+2]*d[i+3][j+3],xie);
}else if(i>16&&j<17){
heng =Math.max(d[i][j]*d[i][j+1]*d[i][j+2]*d[i][j+3],heng);
}else if(i<17&&j>16){
zong = Math.max(d[i][j]*d[i+1][j]*d[i+2][j]*d[i+3][j],zong);
}
}
}
int sun = 0;
j = 0;
for(i = 0;i<20;i++){
for( j =0;j<20;j++){
if(i+3>19||j-3<0){
continue;
}
sun = Math.max(d[i][j]*d[i+1][j-1]*d[i+2][j-2]*d[i+3][j-3],sun);
}
}
System.out.println(heng);
System.out.println(zong);
System.out.println(xie);
System.out.println(sun);
// for(int i=0;i<20;i++){
// for(int j = 0;j<20;j++){
// System.out.println(d[i][j]);
// }
// }
}
}
posted on 2013-10-09 21:41 Monster_Ch 阅读(241) 评论(0) 编辑 收藏 举报