時間限制: 1 sec 記憶體限制: 128 mb
提交: 9 解決: 4
[提交][狀態][討論版][命題人:quanxing]
設有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動態規劃經典題
#include #include#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
using
namespace
std;
int a[150][150
];int b[150][150
];int dp[150][150
];int
main()
dp[1][1]=a[1][1
];
for( i=2;i<=n;i++)
for(i=2;i<=n;i++)
}int s=dp[n][n];
i=n;j=n;
b[i][j]=0
;
for(int i=1;i<=n;i++)
while(i!=1||j!=1)//
回退看看是怎麼退過來的
else
if(i>=2&&dp[i][j]==a[i][j]+dp[i-1
][j])
}//for(int i=1;i<=n;i++)
// //cout
0,sizeof
(dp));
dp[1][1]=b[1][1
];
for(i=2;i<=n;i++)
for(i=2;i<=n;i++)
}cout
return0;
}
方格取數 DP
description 設有n n的方格圖 n 10,我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。如下圖所示 見樣例 某人從圖的左上角的a 點出發,可以向下行走,也可以向右走,直到到達右下角的b點。在走過的路上,他可以取走方格中的數 取走後的方格中將變為數字0 此人從a點到b 點共...
方格取數(dp)
題目鏈結 大意 這題是數字三角形的高階版,數字三角形是從左上到右下路徑的最值,而這題是從左上到右下的任意兩條路徑的和的最值。思路 因為是兩條路徑每一步一定有兩個點 可能重合 所以可以根據閆氏dp分析法將狀態f i1,j1,i2,j2 表示為 兩條路徑分別走到 i1,j1 i2,j2 的所有路徑的和的...
方格取數(DP)
描述 設有n n的方格圖 n 10,我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。如下圖所示 見樣例 某人從圖的左上角的a 點出發,可以向下行走,也可以向右走,直到到達右下角的b點。在走過的路上,他可以取走方格中的數 取走後的方格中將變為數字0 此人從a點到b 點共走兩次,試找出2條...