住所 https://leetcode-cn.com/contest/biweekly-contest-15/problems/minimum-falling-path-sum-ii/
タイトル説明
あなた正方形整数ARRを与え、「非ゼロオフセット減少パス」の定義である:ARR桁を選択し、アレイの各列から、および選出図の順序、隣人は同じ列の元の配列に存在しません。
最小数および降順パスのオフセットが非ゼロに戻ってください。
例1 : 入力:ARR = [ 1、2、3 ]、[ 4、5、6 ]、[ 7、8、9 ] 出力:13 説明: すべてのゼロ以外はパスすることを含む降順オフセット: [ 1、5、9 ]、[ 1、5、7 ]、[ 1、6、7 ]、[ 1、6、8 ] [ 2、4、8 ]、[ 2、4、9 ]、[ 2、6、7 ]、[ 2、6、8 ] [ 3、4、8 ]、[ 3、4、9 ]、[ 3、5、7 ]、[ 3、5、9 ] パス降順と最小デジタルある[ 1、5、7答えがあるので、] 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 }。