動態規劃 3 格仔取數問題

2021-07-15 05:24:26 字數 759 閱讀 3838

問題描述:

有n*n個格仔,每個格仔裡有正數或者0,從最左上角往右下角走。一共走2次,(即從左上角走到右下角走兩次),把所有經過的格仔裡的數加起來,求總和的最大值。如果兩次經過同乙個格仔,則最後求得的總和中該格仔中的數隻加一次。

思路:

避免「不顧全域性,只看區域性」(貌似叫貪心)

動態規劃保證全域性最優。

**如下:

const

int n = 202;

const

int inf = 1000000000;//無窮大

int dp[n*n][n][n];

bool isvalid(int

step,int x1,int x2,int n)

int getvalue(int

step,int x1,int x2,int n)

//狀態表示dp[step][i][j],並且i <= j

//在第step步,兩人分別在第i行和第j行的最大部分,時間複雜度是o(n^3),空間複雜度為o(n^3)

int maxpathsum(int a[n][n],int n)

}dp[0][0][0] = a[0][0];

for (step = 1;step

<= p;i++)

//對於合法的位置進行深度優先搜尋

if (i != j)

else}}

return dp[p][n-1][n-1];

}

NYOJ 980 格仔刷油漆 動態規劃

這道題目狀態轉移方程比較複雜,剛開始以為沒這麼多情況,看了好多大牛的部落格再加上與同學討論才看懂,寫下心得。因為起點不固定,所以我們乙個乙個來考慮,先從角上考慮,設三個陣列來表示分別為d,a,sum,分別表示為 從乙個角開始然後回到同一列的對應位置的總個數 從乙個角開始的總個數 包括回到對應位置和不...

1083 矩陣取數問題 動態規劃)

1083 矩陣取數問題 基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 乙個n n矩陣中有不同的正整數,經過這個格仔,就能獲得相應價值的獎勵,從左上走到右下,只能向下向右走,求能夠獲得的最大價值。例如 3 3的方格。1 3 3 2 1 3 2 2 1 能夠獲得的最大...

動態規劃解方格取數問題

設有 n n的方格圖 n 9 我們將其中的某些方格中填入正整數,而其他的方格中則放入數字 0。如下圖所示 見樣例 a 00 0000 0000 13006 0000 0070 0000 01400 00021 0004 0000 15000 00014 0000 0000 0000 00b某人從圖的...