Blame view

11 - Mayor producto en cuadricula/p11.cpp 3.62 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
33
34
35
  /*
  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?
  
  */
  
  
  #include <stdio.h>
b94c8f960   Francisco Javier Coutiño   p11 - Texto a Mat...
36
37
38
39
  #include <stdlib.h>
  #include <string.h>
  
  #include <iostream>
f44c3066c   Francisco Javier Coutiño   p11: __Init__
40
41
  
  using namespace std;
b94c8f960   Francisco Javier Coutiño   p11 - Texto a Mat...
42
43
  #define SIZE_X 20
  #define SIZE_Y 20
f44c3066c   Francisco Javier Coutiño   p11: __Init__
44
45
  int main(int argc, char const *argv[])
  {
b94c8f960   Francisco Javier Coutiño   p11 - Texto a Mat...
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
  	int x;
  	int y;
  	int grid[SIZE_X][SIZE_Y] = {0};
  
  	char buffer[4];
  	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";
  
  	//char debug;
  
  	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;
  			memset(buffer,'\0',4);
  
  		}
  		else
  		{
  
  			*ptrBuffer++ = *ptrNumeros;
  
  		}
  
  		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__
123
124
  	return 0;
  }