Jan 24, 2022

Project Euler problem(18)-Max Path Sum

 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

Comparing two files in C language.

Operations on More than one File.    # include < stdio.h > # include < stdlib.h > # include < string.h > int main ( int ...