ダンジョンゲーム

1  INT calculateMinimumHP(ベクトル<ベクトル< INT >>&地下牢){
 2      であれば(dungeon.size()= = 0 3          リターン 0 4      INT end_x = dungeon.size() - 1 ;        // 
5      INT end_y =ダンジョン[ 0 ] .size() - 1 ;  // 
6      ベクトル<ベクトル< INT >> DP(dungeon.size()、ベクトル< INT >(ダンジョン[ 0 ] .size()))。
7      場合(ダンジョン[end_x】[end_y〕< 08。          DP [end_x] [end_y] = - ダンジョン[end_x] [end_y];
 9      そう
10          DP [end_x] [end_y] = 0 ;
 11      INT J = end_y- 。1 ; J> = 0 ; --j )     // 処理され、最後の行の各列に対して
12をある     {
 13は          DP [end_x] [J] DP = [end_x] [+ J 。1 - ] ;ダンジョン[end_x] [J]
 14          IF(DP [end_x] [J] < 0 15              DP [end_x] [J]が= 0 ;
 16      }
 17  
18である     ためint型私= end_x - 1I> = 0 ; - I)
 19      {
 20          DP [I] [end_y] = DP [I + 1 ] [end_y] - ダンジョン[I] [end_y]。
21          であれば(DP [I] [end_y] < 0 22              、DP [I] [end_y] = 0 ;
23      }
 24      のためのint型 I = end_x - 1 ; I> = 0 ; - I)
 25      {
 26          のためにINT J = end_y - 1 ; J> = 0 ; -J)
 27          {
 28              DP [I] [J] =分(DP [I + 1 ] [j]は、DP [I]、[J + 1 ]) - ダンジョン[I] [J]。
29              であれば(DP [I] [J] < 0 30                  DP [I] [J] = 0 ;
31          }
 32      }
 33      リターン DP [ 0 ] [ 0 ] + 1 34 }

動的計画方程式

DP [I] [J] = MAX(1分(DP [I + 1] [j]は、DP [I]、[J + 1]) - ダンジョン[I] [J])。

おすすめ

転載: www.cnblogs.com/zouma/p/11502338.html