HNACM 六 第四題 探尋寶藏

2021-07-07 11:04:31 字數 1819 閱讀 7868

傳說hmh大沙漠中有乙個m*n迷宮,裡面藏有許多寶物。某天,dr.kong找到了迷宮的地圖,他發現迷宮內處處有寶物,最珍貴的寶物就藏在右下角,迷宮的進出口在左上角。當然,迷宮中的通路不是平坦的,到處都是陷阱。dr.kong決定讓他的機械人卡多去探險。

但機械人卡多從左上角走到右下角時,只會向下走或者向右走。從右下角往回走到左上角時,只會向上走或者向左走,而且卡多不走回頭路。(即:乙個點最多經過一次)。當然卡多順手也拿走沿路的每個寶物。

dr.kong希望他的機械人卡多盡量多地帶出寶物。請你編寫程式,幫助dr.kong計算一下,卡多最多能帶出多少寶物。

第一行: k     表示有多少組測試資料。 

接下來對每組測試資料:

第1行: m n

第2~m+1行: ai1 ai2 ……ain (i=1,…..,m)

對於每組測試資料,輸出一行:機械人卡多攜帶出最多價值的寶物數
2≤k≤5      1≤m, n≤50     0≤aij≤100    (i=1,….,m; j=1,…,n)

所有資料都是整數。 資料之間有乙個空格。

標準輸入

標準輸出

22 3

0 10 10

10 10 80

3 30 3 9

2 8 5

5 7 100

120134

雙向dp問題

思路:從左上走到右下↘,再從右下走到左上↖,可以看做從左上向右下走兩條路↘↘(不相交的路)使得這兩條路徑上的值加起來最大。

用乙個三維的陣列來記錄,dp[b][x1][x2],b表示走的步數,表示兩條路徑上的某個點的橫縱座標相加之和,x1表示第一條路的某一點的橫座標,y1表示第一條路的某一點的橫座標;x2表示第二條路的某一點的橫座標,y2表示第二條路的某一點的橫座標。存在x1+y1=x2+y2=b(2<=b<=r+c)。

只要x1,x2,y1,y2不越界且,y1!=y2就可以保證兩條路徑無重複點。這兩條路徑都是從左上走到右下,且只能向下走或者向右走。那麼dp[b][x1][x2]=max(dp[b-1][x1][x2](後退一步時,第一條路和第二條路都是從上面走來的),

dp[b-1][x1-1][x2-1](後退一步時,第一條路和第二條路都是從左面走來的),

dp[b-1][x1-1][x2](後退一步時,第一條路是從左面走來,第二條路都是從上面走來的),

dp[b-1][x1][x2-1](後退一步時,第一條路是上面走來,第二條路都是從左面走來的),)+num[x1][y1]+num[x2][y2](這兩個千萬不能忘);

最後,當走終點右下角的時候選擇乙個較大的路徑max(dp[r+c-1][r][r-1],dp[r+c-1][r-1][r])+num[r][c];記得到所求結果,上述兩個題目左上和右下角都為0所以就沒有加,直接輸出了。

#include 

#include

#include

#include

using

namespace

std;

const

int m = 55;

intmap[m][m], m, n, dp[2*m][m][m];

int dp()

int i, j, k;

memset(dp, 0, sizeof(dp));

for(k = 3; k < m+n; k++)}}

return dp[m+n-1][m][m-1] + map[m][n];

}int main()

}printf("%d\n",dp());

}return

0;}

河南省第六屆省賽 探尋寶藏 dp

time limit 1 sec memory limit 128 mb submit 59 solved 26 submit status web board 傳說hmh大沙漠中有乙個m n迷宮,裡面藏有許多寶物。某天,dr.kong找到了迷宮的地圖,他發現迷宮內處處有 寶物,最珍貴的寶物就藏在右...

學習opencv ,第六章第四題

4.在乙個畫圖程式裡,例如powerpoint,畫一系列同心圓形成乙個靶心 a.構造一系列進入靶心的直線,儲存影象 b.用乙個3 3的中孔大小,對你的影象執行並顯示一階x和y方向的層數,然後將中孔大小增加到5 5,9 9和13 13.描述結果 include include include incl...

《學習opencv》第四章第六題

include stdafx.h include highgui.h include cv.h define img width 512 define img height 512 cvfont font char display text 是否在編輯標籤 bool iseditlabel fals...