Project Euler problem-18(using C language)
#include <stdio.h>
int array[15][15] = {
{75, 0},
{95, 64, 0},
{17, 47, 82, 0},
{18, 35, 87, 10, 0},
{20, 04, 82, 47, 65, 0},
{19, 01, 23, 75, 03, 34, 0},
{88, 02, 77, 73, 07, 63, 67, 0},
{99, 65, 04, 28, 06, 16, 70, 92, 0},
{41, 41, 26, 56, 83, 40, 80, 70, 33, 0},
{41, 48, 72, 33, 47, 32, 37, 16, 94, 29, 0},
{53, 71, 44, 65, 25, 43, 91, 52, 97, 51, 14, 0},
{70, 11, 33, 28, 77, 73, 17, 78, 39, 68, 17, 57, 0},
{91, 71, 52, 38, 17, 14, 91, 43, 58, 50, 27, 29, 48, 0},
{63, 66, 04, 68, 89, 53, 67, 30, 73, 16, 69, 87, 40, 31, 0},
{04, 62, 98, 27, 23, 9, 70, 98, 73, 93, 38, 53, 60, 04, 23}};
////////////////////////////////////////////////////////////////////////////
// store first element of array
int sum = 75;
//////////////////////////////
int max_sum_triangle(int x, int y)
{
int max = 0;
for (int i = 0; i < 7; i++) //integer (no. of rows -2)/2 +1 iterations
{
int sum_1 = array[x + 1][y] + array[x + 2][y];
int sum_2 = array[x + 1][y] + array[x + 2][y + 1];
int sum_3 = array[x + 1][y + 1] + array[x + 2][y + 1];
int sum_4 = array[x + 1][y + 1] + array[x + 2][y + 2];
printf("counter :%d\n", i);
printf("sum_1 :%d\n", sum_1);
printf("sum_2 :%d\n", sum_2);
printf("sum_3 :%d\n", sum_3);
printf("sum_4 :%d\n", sum_4);
if (sum_1 >= sum_2 && sum_1 >= sum_3 && sum_1 >= sum_4)
{
max = sum_1;
x = x + 2;
y = y;
}
if (sum_2 >= sum_1 && sum_2 >= sum_3 && sum_2 > sum_4)
{
max = sum_2;
x = x + 2;
y = y + 1;
}
if (sum_3 >= sum_2 && sum_3 >= sum_1 && sum_3 >= sum_4)
{
max = sum_3;
x = x + 2;
y = y + 1;
}
if (sum_4 >= sum_2 && sum_4 >= sum_3 && sum_4 >= sum_1)
{
max = sum_4;
x = x + 2;
y = y + 2;
}
sum += max;
printf("Sum : %d\n\n", sum);
}
return sum;
}
int main(int argc, char const *argv[])
{
max_sum_triangle(0, 0);
printf("Final Sum : %d", sum);
return 0;
}
No comments:
Post a Comment