/
018.boo
33 lines (30 loc) · 927 Bytes
/
018.boo
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
/*
Dynamic programming. Runs from bottom to up, setting values of each line with
the maximum each item can achieve.
Then it's just to check the A[0][0] for the maximum.
*/
import System
import System.Linq.Enumerable
A = (
(75,),
(95,64),
(17,47,82),
(18,35,87,10),
(20,04,82,47,65),
(19,01,23,75,03,34),
(88,02,77,73,07,63,67),
(99,65,04,28,06,16,70,92),
(41,41,26,56,83,40,80,70,33),
(41,48,72,33,47,32,37,16,94,29),
(53,71,44,65,25,43,91,52,97,51,14),
(70,11,33,28,77,73,17,78,39,68,17,57),
(91,71,52,38,17,14,91,43,58,50,27,29,48),
(63,66,04,68,89,53,67,30,73,16,69,87,40,31),
(04,62,98,27,23,09,70,98,73,93,38,53,60,04,23)
)
for i in range(13, -1):
for j in range(i+1):
A[i][j] = Math.Max(A[i][j]+A[i+1][j+1], A[i][j]+A[i+1][j])
answer = A[0][0]
print answer
assert answer == 1074