第九章 動態規劃 1277 例9 21 方格取數

2021-10-05 13:22:29 字數 1147 閱讀 1629

1277:【例9.21】方格取數

時間限制: 1000 ms 記憶體限制: 65536 kb

提交數: 2603 通過數: 1824

【題目描述】

設有n×n的方格圖,我們在其中的某些方格中填入正整數,而其它的方格中則放入數字0。如下圖所示:

某人從圖中的左上角a出發,可以向下行走,也可以向右行走,直到到達右下角的b點。在走過的路上,他可以取走方格中的數(取走後的方格中將變為數字0)。

此人從a點到b點共走了兩次,試找出兩條這樣的路徑,使得取得的數字和為最大。

【輸入】

第一行為乙個整數n(n≤10),表示n×n的方格圖。

接下來的每行有三個整數,第乙個為行號數,第二個為列號數,第三個為在該行、該列上所放的數。一行「0 0 0」表示結束。

【輸出】

第乙個整數,表示兩條路徑上取得的最大的和。

【輸入樣例】

82 3 13

2 6 6

3 5 7

4 4 14

5 2 21

5 6 4

6 3 15

7 2 14

0 0 0

【輸出樣例】

67思路:從a到b走兩次 等同於兩點同時從a到b 只要路徑不重合即可

dp[i][j][k][l]表示第乙個點座標為(i,j)第二個點座標為(k,l)時的取數之和

. 設狀態:f[i][j][k][l];//表示兩條路同時走,第一條路徑走到(i,j)時,第二條走到(k,l)時的最大數字和;

初始狀態:f[0][0][0][0]=0;

最終狀態:f[n][n][n][n];

狀態轉移方程:當i == k && j == l時,f[i][j][k][l]=max

for(

int i =

1; i <= n; i++)}

}}printf

("%d"

,f[n]

[n][n]

[n])

;return0;

}

第九章 動態規劃 1305 Maximum sum

輸入樣例 110 1 1 2 2 3 3 4 4 5 5 輸出樣例 13 提示 就是求最大子段和問題,樣列取2,2,3,3,4和5,baidu搜poj 2479 maximum sum,可獲得大量經典最大子段和問題的題目解析,本題o n2 演算法超時,必須用o n 演算法。思路 從左到右分別求出它們...

第九章 9 2 1節練習

練習 9.3 構成迭代器範圍的迭代器有何限制?解答 這裡首先要清楚什麼是迭代器範圍 引用 乙個迭代器範圍 iterator range 由一對迭代器表示,兩個迭代器分別指向同乙個容器中的元素或者是尾元素之後的位置 one past the last element 再去 限制 引用 對構成範圍迭代器...

第九章 動態規劃 1262 例9 6 挖地雷

題目描述 在乙個地圖上有n個地窖 n 200 每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑,並規定路徑都是單向的,且保證都是小序號地窖指向在序號地窖,也不存在可以從乙個地窖出發經過若干地窖後又回到原來地窖的路徑。某人可以從任一處開始挖地雷,然後沿著指出的連線往下挖 僅能選擇一條路徑 當...