Commit 5b5a32b 1 parent 1dcace1 commit 5b5a32b Copy full SHA for 5b5a32b
File tree 4 files changed +57
-0
lines changed
4 files changed +57
-0
lines changed Original file line number Diff line number Diff line change
1
+ import sys
2
+
3
+
4
+ def solve ():
5
+ input = sys .stdin .readline
6
+ N = int (input ().strip ())
7
+ mats = [list (map (int , input ().strip ().split ())) for _ in range (N )]
8
+ dp = [[sys .maxsize for _ in range (N )] for _ in range (N )]
9
+
10
+ for i in range (N ):
11
+ dp [i ][i ] = 0
12
+
13
+ for bgn in range (N - 1 ):
14
+ end = bgn + 1
15
+ dp [bgn ][end ] = mats [bgn ][0 ] * mats [bgn ][1 ] * mats [end ][1 ]
16
+
17
+ for l in range (2 , N ):
18
+ for bgn in range (N - l ):
19
+ end = bgn + l
20
+ for mid in range (bgn , end ):
21
+ dp [bgn ][end ] = min (dp [bgn ][end ], \
22
+ dp [bgn ][mid ] + dp [mid + 1 ][end ] \
23
+ + (mats [bgn ][0 ] * mats [mid ][1 ] * mats [end ][1 ]))
24
+
25
+ print (dp [0 ][N - 1 ])
26
+
27
+
28
+ if __name__ == '__main__' :
29
+ solve ()
Original file line number Diff line number Diff line change
1
+ 3
2
+ 5 3
3
+ 3 2
4
+ 2 6
Original file line number Diff line number Diff line change
1
+ 90
Original file line number Diff line number Diff line change
1
+ import sys
2
+ from pathlib import Path
3
+ from unittest import TestCase
4
+ from main import solve
5
+
6
+
7
+ class Test (TestCase ):
8
+ def my_solve (self , testcase_input ):
9
+ sys .stdin = open (testcase_input , 'r' )
10
+ stdout = sys .stdout
11
+ sys .stdout = open ('stdout.txt' , 'w' )
12
+ solve ()
13
+ sys .stdout .close ()
14
+ sys .stdout = stdout
15
+
16
+ def test_solve (self , testcase_number : str ):
17
+ self .my_solve ('test' + testcase_number + '.txt' )
18
+ self .assertEqual (
19
+ Path ('test' + testcase_number + '_answer.txt' ).read_text ().strip (),
20
+ Path ('stdout.txt' ).read_text ().strip ())
21
+
22
+ def test1_solve (self ):
23
+ self .test_solve ('1' )
You can’t perform that action at this time.
0 commit comments