jerryzhou同學經常改編習題給自己做。
這天,他又改編了一題。。。。。
設有n*n的方格圖,我們將其中的某些方格填入正整數,
而其他的方格中放入0。
某人從圖得左上角出發,可以向下走,也可以向右走,直到到達右下角。
在走過的路上,他取走了方格中的數。(取走後方格中數字變為0)
此人從左上角到右下角共走3次,試找出3條路徑,使得取得的數總和最大。
第一行:n (4<=n<=20)
接下來乙個n*n的矩陣,矩陣中每個元素不超過80,不小於0
一行,表示最大的總和。
41 2 3 4
2 1 3 4
1 2 3 4
1 3 2 4
39
各個測試點1s
多程序dp
就像傳紙條。。。恩
第一次居然ce了 忘了memset的cstring了!!!!!
f[x][y][j][k]表示第一次取到x和y
第二次取到j x+y-j
第三次取到k x+y-k時取到的最大值
然後要判斷 可能走乙個格仔 這時候另一次要+0
#include#include#includeusing namespace std;
int s[22][22];
int f[22][22][22][22];
int m,a,b,c;
int move(int bu,int x1,int x2,int x3)
int work(int x,int y,int j,int k)
int main()
{ scanf("%d",&m);
memset(f,-1,sizeof(f));
for(a=1;a<=m;a++)
for(b=1;b<=m;b++)
scanf("%d",&s[a][b]);
cout<
話說不會遞推的dp了。。。
現在只會遞迴。。。
求不爆棧
noip rp++
解題報告 Vijos1143 三取方格數
還記得馬攔過河卒嗎?如果把馬去掉,那就是一題標準的從左上角走到右下角得到最大值的方法 f i j max f i 1 j f i j 1 a i j 現在要取三次,可以看做有三個人同時從左上角走向右下角,取走路上的值 每個格仔只能取一次 所以說現在的狀態不能用f i j 來表示了 可以用f x1 y...
1277 方格取數
設有n n的方格圖,我們在其中的某些方格中填入正整數,而其它的方格中則放入數字0。如下圖所示 某人從圖中的左上角a出發,可以向下行走,也可以向右行走,直到到達右下角的b點。在走過的路上,他可以取走方格中的數 取走後的方格中將變為數字0 此人從a點到b點共走了兩次,試找出兩條這樣的路徑,使得取得的數字...
1907 方格取數 3
時間限制 2 s 空間限制 256000 kb 題目等級 大師 master 題解檢視執行結果 問題描述 在乙個有m n 個方格的棋盤中,每個方格中有乙個正整數。現要從方格中取數,使任 意2 個數所在方格沒有公共邊,且取出的數的總和最大。試設計乙個滿足要求的取數演算法。程式設計任務 對於給定的方格棋...