設有n*n的方格圖(n<=10),我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。
某人從圖的左上角的a 點(1,1)出發,可以向下行走,也可以向右走,直到到達右下角的b點(n,n)。在走過的路上,他可以取走方格中的數(取走後的方格中將變為數字0)。
此人從a點到b 點共走兩次,試找出2條這樣的路徑,使得取得的數之和為最大。
輸入的第一行為乙個整數n(表示n*n的方格圖),接下來的每行有三個整數,前兩個表示位置,第三個數為該位置上所放的數。一行單獨的0表示輸入結束。
只需輸出乙個整數,表示2條路徑上取得的最大的和。
只能看題解寫了。四維雙線程dp
相當於兩個人同時走。
dp[i][j][k][l] 表示到達 (i,j)和 (k,l)的最大值
那麼他可以由4種情況轉移過來,所以寫出來狀態方程。另外要注意不能處於同一位置,如果處於同一位置,只加其中乙個。
1 #include2using
namespace
std;
3int dp[20][20][20][20];4
int g[20][20];5
6int
main()
16for(int i=1;i<=n;i++) 23}
24}25}
26 printf("
%d\n
",dp[n][n][n][n]);27}
28return0;
29 }
posted @
2019-02-17 20:21
acmerszl 閱讀(
...)
編輯收藏
方格取數 藍橋杯
問題描述 設有n n的方格圖 n 10 我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。某人從圖的左上角的a 點 1,1 出發,可以向下行走,也可以向右走,直到到達右下角的b點 n,n 在走過的路上,他可以取走方格中的數 取走後的方格中將變為數字0 此人從a點到b 點共走兩次,試找出2...
藍橋杯 方格取數 (多執行緒DP)
演算法訓練 方格取數 時間限制 1.0s 記憶體限制 256.0mb 問題描述 設有n n的方格圖 n 10 我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。某人從圖的左上角的a 點 1,1 出發,可以向下行走,也可以向右走,直到到達右下角的b點 n,n 在走過的路上,他可以取走方格中...
藍橋杯 方格填數
方格填數 如下的10個格仔 如果顯示有問題,也可以參看 圖1.jpg 填入0 9的數字。要求 連續的兩個數字不能相鄰。左右 上下 對角都算相鄰 一共有多少種可能的填數方案?請填寫表示方案數目的整數。注意 你提交的應該是乙個整數,不要填寫任何多餘的內容或說明性文字。include include in...