diff options
Diffstat (limited to 'euler67.c')
-rw-r--r-- | euler67.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/euler67.c b/euler67.c new file mode 100644 index 0000000..f7a7291 --- /dev/null +++ b/euler67.c @@ -0,0 +1,35 @@ +#include <stdio.h> + +int max(int a, int b) +{ + if (a > b) + return a; + else + return b; +} + +int main() +{ + int triangle[100][100]; + int sol[100][100]; + int i, j, n, a; + + n = 0; + while (scanf("%d", &a)!=EOF) { + triangle[n][0] = a; + for (i = 1; i <= n; i++) + scanf("%d", &triangle[n][i]); + n++; + } + + for (i = 0; i < n; i++) + sol[n-1][i] = triangle[n-1][i]; + + for (i = n-2; i >= 0; i--) { + for (j = 0; j <= i; j++) { + sol[i][j] = triangle[i][j] + max(sol[i+1][j], sol[i+1][j+1]); + } + } + + printf("%d\n", sol[0][0]); +} |