File tree Expand file tree Collapse file tree 2 files changed +65
-0
lines changed Expand file tree Collapse file tree 2 files changed +65
-0
lines changed Original file line number Diff line number Diff line change 1+ all :
2+ gcc -O2 -o test dungeon.c
Original file line number Diff line number Diff line change 1+ #include <stdio.h>
2+ #include <stdlib.h>
3+ #include <limits.h>
4+
5+ static int calculateMinimumHP (int * * dungeon , int dungeonRowSize , int dungeonColSize )
6+ {
7+ int i , j ;
8+ int * * dp = malloc (dungeonRowSize * sizeof (int * ));
9+ for (i = 0 ; i < dungeonRowSize ; i ++ ) {
10+ dp [i ] = malloc (dungeonColSize * sizeof (int ));
11+ }
12+
13+ for (i = dungeonRowSize - 1 ; i >= 0 ; i -- ) {
14+ for (j = dungeonColSize - 1 ; j >= 0 ; j -- ) {
15+ if (i == dungeonRowSize - 1 && j == dungeonColSize - 1 ) {
16+ dp [i ][j ] = 1 - dungeon [i ][j ] > 1 ? 1 - dungeon [i ][j ] : 1 ;
17+ } else {
18+ int hp1 = i == dungeonRowSize - 1 ? INT_MAX : (dp [i + 1 ][j ] - dungeon [i ][j ] > 1 ? dp [i + 1 ][j ] - dungeon [i ][j ] : 1 );
19+ int hp2 = j == dungeonColSize - 1 ? INT_MAX : (dp [i ][j + 1 ] - dungeon [i ][j ] > 1 ? dp [i ][j + 1 ] - dungeon [i ][j ] : 1 );
20+ dp [i ][j ] = hp1 < hp2 ? hp1 : hp2 ;
21+ }
22+ }
23+ }
24+
25+ return dp [0 ][0 ];
26+ }
27+
28+ int main (void )
29+ {
30+ int row_size = 3 , col_size = 3 ;
31+ int i , j , * * dungeon = malloc (row_size * sizeof (int * ));
32+ for (i = 0 ; i < row_size ; i ++ ) {
33+ dungeon [i ] = malloc (col_size * sizeof (int ));
34+ }
35+ #if 1
36+ dungeon [0 ][0 ] = 1 ;
37+ dungeon [0 ][1 ] = -3 ;
38+ dungeon [0 ][2 ] = 3 ;
39+ dungeon [1 ][0 ] = 0 ;
40+ dungeon [1 ][1 ] = -2 ;
41+ dungeon [1 ][2 ] = 0 ;
42+ dungeon [2 ][0 ] = -3 ;
43+ dungeon [2 ][1 ] = -3 ;
44+ dungeon [2 ][2 ] = -3 ;
45+ #else
46+ dungeon [0 ][0 ] = 3 ;
47+ dungeon [0 ][1 ] = -20 ;
48+ dungeon [0 ][2 ] = 30 ;
49+ dungeon [1 ][0 ] = -3 ;
50+ dungeon [1 ][1 ] = 4 ;
51+ dungeon [1 ][2 ] = 0 ;
52+ #endif
53+
54+ printf ("dungeon:\n" );
55+ for (i = 0 ; i < row_size ; i ++ ) {
56+ for (j = 0 ; j < col_size ; j ++ ) {
57+ printf ("%d " , dungeon [i ][j ]);
58+ }
59+ printf ("\n" );
60+ }
61+ printf ("%d\n" , calculateMinimumHP (dungeon , row_size , col_size ));
62+ return 0 ;
63+ }
You can’t perform that action at this time.
0 commit comments