烏龜棋 動態規劃比較好的題目

2021-09-10 23:47:48 字數 1892 閱讀 9834

小明過生日的時候,爸爸送給他一副烏龜棋當作禮物。

烏龜棋的棋盤是一行nn個格仔,每個格仔上乙個分數(非負整數)。棋盤第1格是唯一的起點,第nn格是終點,遊戲要求玩家控制乙個烏龜棋子從起點出發走到終點。

烏龜棋中mm張爬行卡片,分成4種不同的型別(mm張卡片中不一定包含所有44種型別的卡片,見樣例),每種型別的卡片上分別標有1,2,3,41,2,3,4四個數字之一,表示使用這種卡片後,烏龜棋子將向前爬行相應的格仔數。遊戲中,玩家每次需要從所有的爬行卡片中選擇一張之前沒有使用過的爬行卡片,控制烏龜棋子前進相應的格仔數,每張卡片只能使用一次。

遊戲中,烏龜棋子自動獲得起點格仔的分數,並且在後續的爬行中每到達乙個格仔,就得到該格仔相應的分數。玩家最終遊戲得分就是烏龜棋子從起點到終點過程中到過的所有格仔的分數總和。

很明顯,用不同的爬行卡片使用順序會使得最終遊戲的得分不同,小明想要找到一種卡片使用順序使得最終遊戲得分最多。

現在,告訴你棋盤上每個格仔的分數和所有的爬行卡片,你能告訴小明,他最多能得到多少分嗎?

輸入格式:

每行中兩個數之間用乙個空格隔開。

第11行22個正整數n,mn,m,分別表示棋盤格仔數和爬行卡片數。

第22行nn個非負整數,a_1,a_2,…,a_na1​,a2​,…,an​,其中a_iai​表示棋盤第ii個格仔上的分數。

第33行mm個整數,b_1,b_2,…,b_mb1​,b2​,…,bm​,表示m張爬行卡片上的數字。

輸入資料保證到達終點時剛好用光mm張爬行卡片。

輸出格式:

11個整數,表示小明最多能得到的分數。

輸入樣例#1:複製

9 5

6 10 14 2 8 8 18 5 17

1 3 1 2 1

輸出樣例#1:複製

73
#includeusing namespace std;

int f[41][41][41][41];

int g[5],num[352];

int main()

f[0][0][0][0]=num[1];

for(int i=1;i<=m;i++)

for(int i=0;i<=g[1];i++)

}} }

cout《這道題目,初看,想的是把這個轉化為模版題,不行的話,也可以找出共性。

由於題目說了最後一定會到達末尾,也就是說,最後乙個,開頭一定會到。

接下來,動態規劃是轉化為區域性最優解再進行操作,如何區域性最優呢,想了一下,應該是到第幾個,再遞推。由於從左邊一定會到右邊,這些資料又沒有規律,那麼卡片就沒必要排序,因為每乙個格仔資料都可以極大也可以極小,每乙個都要試,所以動態規劃必然的了。

共性的話,就是可以選擇使用乙個卡片到達乙個格仔,要讓分數最大,相當於使用乙個物品,在一定的空間下,選最大的價值,由於空間連續的,不選當前物品,或者選,不選的話,就是前面的最大價值,選的話,就是轉化為前面的最優解,而這道題目,可以選1,2,3,4 四種,如果單純地直接去試每乙個卡片,而不是每一種卡片,首先是會重複去試的,再是還是可能會重複減去。而且一般的動態規劃是不用全部用上的,以及是沒有順序的。而這道題目的順序顯然會影響。想一下,前一部分取了最大值,前面的稍微小的就被捨棄了,那麼假設稍微小的後面對應很大的,(因為後面一定有不一樣的,只要把那乙個不一樣的改的特別大就行了),.因為一定要全取完卡片,就少了解。 

少了乙個卡片,就只會記錄乙個結果,然而有四種卡片,只記錄乙個結果,其他的結果也有可能是最大值。所以我第一次對於這個題目沒搞清本質,瞎弄。

忘了4種卡片,同時算是新學吧,之前一直沒自己寫過,或者沒幾個經典的。

要注意4類卡片,又要取完,要儲存4種結果,這樣加上前面的思路,妥妥的了。

做了好長時間,以為能做出來,結果答案根本就不對,白高興一場。

烏龜棋 動態規劃

題目鏈結 小明過生日的時候,爸爸送給他一副烏龜棋當作禮物。烏龜棋的棋盤只有一行,該行有 n 個格仔,每個格仔上乙個分數 非負整數 棋盤第 1 格是唯一的起點,第 n 格是終點,遊戲要求玩家控制乙個烏龜棋子從起點出發走到終點。烏龜棋中共有 m 張爬行卡片,分成 4 種不同的型別 m 張卡片中不一定包含...

動態規劃 烏龜棋

小明過生日的時候,爸爸送給他一副烏龜棋當作禮物。烏龜棋的棋盤是一行 n 個格仔,每個格仔上乙個分數 非負整數 棋盤第 1 格是唯一的起點,第 n 格是終點,遊戲要求玩家控制乙個烏龜棋子從起點出發走到終點。烏龜棋中 m 張爬行卡片,分成 4 種不同的型別 m 張卡片中不一定包含所有 4 種型別的卡片,...

P1541 烏龜棋(動態規劃)

點選此處檢視原題 此處有n個位置,記為1 n,每個位置上都對應乙個權值,烏龜從編號為1的位置出發,利用m張爬行卡片到達位置n,爬行卡牌有四種,分別可以讓烏龜移動1,2,3,4步,並保證將m張牌全部用盡的時候,烏龜可以到達位置n,而烏龜每到達乙個位置,就將獲取這一位置的權值,問如何安排爬行卡牌的使用順...