題目描述
設有 n×n 的方格圖,我們在其中的某些方格中填入正整數,而其它的方格中則放入數字0。
某人從圖中的左上角 a 出發,可以向下行走,也可以向右行走,直到到達右下角的 b 點。
在走過的路上,他可以取走方格中的數(取走後的方格中將變為數字0)。
此人從 a 點到 b 點共走了兩次,試找出兩條這樣的路徑,使得取得的數字和為最大。
輸入格式
第一行為乙個整數n,表示 n×n 的方格圖。
接下來的每行有三個整數,第乙個為行號數,第二個為列號數,第三個為在該行、該列上所放的數。
一行「0 0 0」表示結束。
輸出格式
輸出乙個整數,表示兩條路徑上取得的最大的和。
資料範圍
n≤10
輸入樣例:
82 3 13
2 6 6
3 5 7
4 4 14
5 2 21
5 6 4
6 3 15
7 2 14
0 0 0
輸出樣例:
67思路
由於要走兩次, 所以可以用 f[i1, j1, i2, j2] 來存此時在(i1, j1) 和 (i2, j2)的最大的值
這裡對這個進行優化, 用 k代表i+j=k時的狀態, f[k, i1, i2]就可以存下上面描述的狀態, 然後對這個狀態的前一步的4個狀態去最大值就可以得到當前狀太的最大值
**
#include
#include
#include
#include
using
namespace std;
const
int n =15;
int g[n]
[n], f[
2* n]
[n][n]
;int n, m;
intmain()
} cout << f[
2* n]
[n][n]
<< endl;
return0;
}
NOIP2000提高組 單詞接龍
單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 中出現兩次 在兩個單詞相連時,其重合部分合為一部分,例如 beast和astonish,如果接成一條龍則變為beastonish,另外相鄰的兩部分不能...
NOIP2000 提高組 複賽 進製轉換
noip2000 提高組 複賽 進製轉換 1.該題難在弄懂樣例,負進製,餘數為 0 2.試了一下,程式自帶的 發現對負進製轉換無用,得自個寫一套。3.弄懂了 15轉 2進製,餘數 0,商正負都可以。模擬如下 15除 2 8餘1 8除 2 4餘0 4除 2 2餘0 2除 2 1餘0 1除 2 1餘1 ...
NOIP 2000 提高組 複賽 單詞接龍
noip 2000 提高組 複賽 單詞接龍 1.程式編寫過程中,發現接龍處的判斷編寫有誤,馬上著手修改。2.樣例通過,提交40分,錯了測試點1 4.輸入 1envelopee 輸出 154.上述測試點是挺經典的,不容易考慮到。envelope envelope 拼接成envelopenvelope ...