動態規劃-方格取數思考解題方式

方格取數
給出N*N的方格圖,方格中填入某些正整數,某些是0。
讓你從左上角出發,走到右下角。
兩種方式:可以向下,向右走。
問你走兩次,找出兩條路徑,使得的數字和最大。

解題:
思考之前的題目是走一次,類似題目摘花生和最低通行費。

對於這個新的問題,我們先以以前的思考來類別
摘花生
f[i][j] 表示從(1,1)到(n,n)的路徑的最大值
f[i][j]=max(f[i-1][j],f[i][j-1])+w[i][j];
需要注意的是這個是取一次

狀態表示

對於目前這個題目,首先走兩次,那麼路線可能會有重複點。
走兩次:
f[i1,j1][i2,j2] 表示所有從(1,1)(1,1)分別走到(i1,j1)(i2,j2)的路徑最大值

如何處理”同一個格子不能被重複選擇“
我們可以考慮到,只有i1+j1 == i2+j2時兩條路徑的格子纔可以重和。
同時走,只有相等的時候纔會在同一個格子裏。

這個我們要想不重複,那麼我們可以考慮一邊走一邊標記,或者說兩個同時走,
對於DP上,我們可以考慮兩個同時走的情況。
假如,f[k,i1,i2] 表示所有從 分別走到(i1,k-i1)(i2,k-i2)的路徑的最大值。

k 表示兩條路線當前走到的格子的橫縱座標之和
k=i1+j1 =i2+j2
狀態計算

關於這個
第一條 下 第一條 下 第一條:右 第一條:右
第二條 下 第二條 右 第二條:下 第二條:右

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章