原題鏈結
題目描述
設有n×n 的方格圖(n ≤ 9),我們將其中的某些方格中填入正整數,而其他的方格中則放入數字 0。如下圖所示(見樣例):某人從圖的左上角的a點出發,可以向下行走,也可以向右走,直到到達右下角的b點。在走過的路上,他可以取走方格中的數(取走後的方格中將變為數字0)。此人從 a點到 b點共走兩次,試找出 2條這樣的路徑,使得取得的數之和為最大。輸入格式
輸入的第一行為乙個整數 n(表示n × n 的方格圖),接下來的每行有三個整數,前兩個表示位置,第三個數為該位置上所放的數。一行單獨的0表示輸入結束。輸出格式
只需輸出乙個整數,表示 2條路徑上取得的最大的和。輸入樣例
8輸入樣例 分析:2 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
但是,如果第一次取走的數字是9和5,第二次取走的數字是6和8,那麼這兩次可以取走棋盤上所有的數字,和為28。很明顯,解決數塔問題的策略在本題不再適用。
;//dp[i][j][k]:第i個斜行,第乙個人在j列,第二個人在k列所能得到的最優值
intmain()
for(
int i =
1;i <=
2* n -
1;i++
)//從第1斜行刷到最後乙個斜行
for(
int j =
1;j <= i;j++
)//j,k:列舉每個斜行中的列,暫且認為每個斜行都有i列
for(
int k = j;k <= i;k++
)
cout << dp[
2* n -1]
[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 ...