Blame view

11 - Mayor producto en cuadricula/p11.cpp 3.63 KB
f44c3066c   Francisco Javier Coutiño   p11: __Init__
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  /*
  Largest product in a grid
  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?
  
  */
f44c3066c   Francisco Javier Coutiño   p11: __Init__
33
  #include <stdio.h>
b94c8f960   Francisco Javier Coutiño   p11 - Texto a Mat...
34
35
  #include <stdlib.h>
  #include <string.h>
f44c3066c   Francisco Javier Coutiño   p11: __Init__
36
  using namespace std;
b94c8f960   Francisco Javier Coutiño   p11 - Texto a Mat...
37
38
  #define SIZE_X 20
  #define SIZE_Y 20
20676b739   Francisco Javier Coutiño   p11 -matriz
39
  #define SIZE_MAX_NUMBER 2
b94c8f960   Francisco Javier Coutiño   p11 - Texto a Mat...
40

f44c3066c   Francisco Javier Coutiño   p11: __Init__
41
42
  int main(int argc, char const *argv[])
  {
b94c8f960   Francisco Javier Coutiño   p11 - Texto a Mat...
43
44
45
  	int x;
  	int y;
  	int grid[SIZE_X][SIZE_Y] = {0};
20676b739   Francisco Javier Coutiño   p11 -matriz
46
  	char buffer[SIZE_MAX_NUMBER];
b94c8f960   Francisco Javier Coutiño   p11 - Texto a Mat...
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
  	char *ptrBuffer;
  	char *ptrNumeros;
  	char numeros[] = "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
  \0";
b94c8f960   Francisco Javier Coutiño   p11 - Texto a Mat...
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
  	x = y = 0;
  	ptrBuffer = buffer;
  	ptrNumeros = numeros;
  	while(*ptrNumeros != '\0')
  	{
  		if (*ptrNumeros == ' ' || *ptrNumeros == '
  ')
  		{
  			grid[x][y] = atoi(buffer);
  
  			if (*ptrNumeros == ' ')
  			{
  				x++;
  			}
  			else
  			{
  				x = 0;
  				y++;
  			}
  
  			ptrBuffer = buffer;
20676b739   Francisco Javier Coutiño   p11 -matriz
91
  			memset(buffer,'\0',SIZE_MAX_NUMBER);
b94c8f960   Francisco Javier Coutiño   p11 - Texto a Mat...
92
93
  
  		}
20676b739   Francisco Javier Coutiño   p11 -matriz
94
  		else { *ptrBuffer++ = *ptrNumeros; }
b94c8f960   Francisco Javier Coutiño   p11 - Texto a Mat...
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
  
  		ptrNumeros++;
  	}
  
  	//________________________________________-
  	//PRINT GRID
  	for (int i = 0; i < SIZE_Y; ++i)
  	{
  		for (int j = 0; j < SIZE_X; ++j)
  		{
  			printf("%d\t",grid[j][i]);
  		}
  		printf("
  ");
  	}
  	//------------------------------------------
f44c3066c   Francisco Javier Coutiño   p11: __Init__
111
112
  	return 0;
  }