動態規劃 NOIP2000 提高組 方格取數

2021-10-19 23:31:32 字數 1532 閱讀 9374

原題鏈結

題目描述

設有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 ...