題意:給出乙個n*n的矩陣,然後每乙個位置有一定權值;
要求從(1,1)走兩條路徑到(n,n)使最後結果最大(走的時候帶走格內權值)
思路:題目給出的資料範圍極度小,n<10;
所以我們可以開四維dp dp【i】【j】【k】【l】
表示第乙個人處於(i,j)位置,第二人處於(k,l)位置時候的最大值;
那麼我們只需要從小到大遍歷一遍,即可;
而在遍歷的時候,倘若兩個人的座標一致,那麼格內權值只能取一次,所以需要減一次
1 #include2using
namespace
std;
3const
int maxn=20;4
intg[maxn][maxn];
5int
dp[maxn][maxn][maxn][maxn];
6int
main()716
for(int i=1;i<=n;i++)25}
26}27}
28 printf("
%d\n
",dp[n][n][n][n]);
29return0;
30 }
P1004 方格取數
這題有兩種做法。第一種是同時考慮兩個點,也就是用4個迴圈。列舉每個點的位置,並計算總分。f i j k l max f i j k l f i 1 j k 1 l f i j 1 k l 1 f i 1 j k l 1 f i j 1 k 1 l a i j a k l 當 i k j l 時,多算...
P1004 方格取數
題目描述 設有n n的方格圖 n 9 我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。如下圖所示 見樣例 a0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 14 0 0 0 0 0 21 0 0 0 4 0 0 0 0 15...
P1004 方格取數
題目描述 設有n n的方格圖 n 9 我們將其中的某些方格中填入正整數,而其他的方格中則放入數字00。如下圖所示 見樣例 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 14 0 0 0 0 0 21 0 0 0 4 0 0 0 0 15...