8786 方格取數 (多執行緒dp)

2022-05-23 17:00:09 字數 736 閱讀 1744

【題目描述】

設有n*n的方格圖(n<=10),我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。某人從圖的左上角的a 點出發,可以向下行走,也可以向右走,直到到達右下角的b點。在走過的路上,他可以取走方格中的數(取走後的方格中將變為數字0)。 此人從a點到b 點共走兩次,試找出2條這樣的路徑,使得取得的數之和為最大。

【題目鏈結】

【演算法】

醉了,一開始以為很簡單分成兩次唄,走完一遍第一次路徑經過的點記為0,但是感覺有點不對勁,因為第一次走過路可能會影響第二次,也就是有後效性,分開計算狀態空間中有很多種情況並沒有遍歷到。然後看書。。。。所以要多執行緒dp,設dp【a】【b】【c】【d】表示第一次走到【a】【b】點第二次走到【c】【d】點狀態下獲得的最大分數,狀態方程倒是不難。

【**】

1 #include 2

using

namespace

std;

3int

n,i,j,tmp,a,b;

4int puz[20][20],dp[20][20][20][20];5

intmain()

618 printf("

%d\n

",dp[n][n][n][n]);

19return0;

20 }

OpenJudge P8786 方格取數 DP

總時間限制 1000ms 記憶體限制 65536kb 描述 設有n n的方格圖 n 10 我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。如下圖所示 見樣例 某人從圖的左上角的a 點出發,可以向下行走,也可以向右走,直到到達右下角的b點。在走過的路上,他可以取走方格中的數 取走後的方格...

OpenJudge 8786 方格取數 dp入門)

位址 描述設有n n的方格圖 n 10 我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。如下圖所示 見樣例 p 某人從圖的左上角的a 點出發,可以向下行走,也可以向右走,直到到達右下角的b點。在走過的路上,他可以取走方格中的數 取走後的方格中將變為數字0 此人從a點到b 點共走兩次,試...

DP ssl 1010 方格取數(多執行緒DP)

設有n n的方格圖 n 10,我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。如下圖所示 見樣例 某人從圖的左上角的a 點出發,可以向下行走,也可以向右走,直到到達右下角的b點。在走過的路上,他可以取走方格中的數 取走後的方格中將變為數字0 此人從a點到b 點共走兩次,試找出2條這樣的...