projectEuler pro11

Problem 11

In the 20×20 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 20×20 grid?

 
JAVA:
 

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编辑  收藏  举报

导航