LeetCode 5129.最小と下降パスII最低落ちるパス合計II

住所  https://leetcode-cn.com/contest/biweekly-contest-15/problems/minimum-falling-path-sum-ii/

タイトル説明
あなた正方形整数ARRを与え、「非ゼロオフセット減少パス」の定義である:ARR桁を選択し、アレイの各列から、および選出図の順序、隣人は同じ列の元の配列に存在しません。

最小数および降順パスのオフセットが非ゼロに戻ってください。

1 

入力:ARR = [ 123 ]、[ 456 ]、[ 789 ]
出力:13
説明:
すべてのゼロ以外はパスすることを含む降順オフセット:
[ 159 ]、[ 157 ]、[ 167 ]、[ 168 ]
[ 248 ]、[ 249 ]、[ 267 ]、[ 268 ]
[ 348 ]、[ 349 ]、[ 357 ]、[ 359 ]
パス降順と最小デジタルある[ 157答えがあるので、] 13 


ヒント:

1 <= arr.length == ARR [I] .LENGTH <= 200 
- 99 <= ARR [I] [J] <= 99

アルゴリズム1つの
TLE暴力の前に結果
試しに、動的プログラミング

DP [I] [J] =分(DP [I-1] [0]、DP [I-1] [1]、DP [I-1] [2] ....... DP [1- 1] [Y])。//前提Y!= J

1  クラスソリューション{
 2  公共3      int型 DP [ 1000年 ] [ 1000年]。
4  
5      int型 minsum(ベクトル<ベクトル< INT >>&ARR、int型のx、int型のY)
 6      {
 7          場合(x <= 0戻り 0 ;
8          INT RET = 9999999 9  
10          のためのINT iは= 0 ; iは<ARR [ 0 ] .size(); I ++ ){
 11             もし(!I = Y){
 12                  RET =分(保持、DP [X- 1 ] [I])。
13              }
 14          }
 15  
16          リターンRET。
17      }
 18  
19      INT minFallingPathSum(ベクトル<ベクトル< INT >>&ARR){
 20          のためにINT iは= 0 ; iは<ARR [ 0 ] .size(); I ++ ){
 21              、DP [ 0 ] [I] = ARR [ 0 ] [i]は、
22          }
 23  
24          のためにINT iが= 1 ; iが<(arr.size); I ++ ){
 25              のためのint型 J = 0 ; J <ARR [ 0 ] .size(); J ++ ){
 26                  、DP [I] [J] = ARR [I ] [J] +   minsum(ARR、I、J)。 
27              }
 28          }
 29  
30  
31          INT RET = 9999999 32          のためにINT iは= 0 ; iは<ARR [ 0 ]は、.size(); iは++ ){
 33              RET =分(RETは、DPが[(arr.size) - 1 ] [I])。
34         }
 35  
36          戻り右。
37      }
 38 }。
C ++

 

おすすめ

転載: www.cnblogs.com/itdef/p/12041662.html