日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CodeVS 1068-乌龟棋

發布時間:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CodeVS 1068-乌龟棋 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原題

題目描述?Description

? ? ? ?小明過生日的時候,爸爸送給他一副烏龜棋當作禮物。 烏龜棋的棋盤是一行N個格子,每個格子上一個分數(非負整數)。棋盤第1格是唯一 的起點,第N格是終點,游戲要求玩家控制一個烏龜棋子從起點出發走到終點。

…… 1 2 3 4 5 ……N 烏龜棋中M張爬行卡片,分成4種不同的類型(M張卡片中不一定包含所有4種類型 的卡片,見樣例),每種類型的卡片上分別標有1、2、3、4四個數字之一,表示使用這種卡 片后,烏龜棋子將向前爬行相應的格子數。游戲中,玩家每次需要從所有的爬行卡片中選擇 一張之前沒有使用過的爬行卡片,控制烏龜棋子前進相應的格子數,每張卡片只能使用一次。 游戲中,烏龜棋子自動獲得起點格子的分數,并且在后續的爬行中每到達一個格子,就得到 該格子相應的分數。玩家最終游戲得分就是烏龜棋子從起點到終點過程中到過的所有格子的 分數總和。 很明顯,用不同的爬行卡片使用順序會使得最終游戲的得分不同,小明想要找到一種卡 片使用順序使得最終游戲得分最多。 現在,告訴你棋盤上每個格子的分數和所有的爬行卡片,你能告訴小明,他最多能得到 多少分嗎?

輸入描述?Input Description

輸入的每行中兩個數之間用一個空格隔開。

第1行2個正整數N和M,分別表示棋盤格子數和爬行卡片數。

第2行N個非負整數,a1a2……aN,其中ai表示棋盤第i個格子上的分數。

第3行M個整數,b1b2……bM,表示M張爬行卡片上的數字。 輸入數據保證到達終點時剛好用光M張爬行卡片,即N - 1=∑(1->M) bi。

輸出描述?Output Description

輸出一行一個整數

樣例輸入?Sample Input

13?8

4?96?10?64?55?13?94?53?5?24?89?8?30

1?1?1?1?1?2?4?1

樣例輸出?Sample Output

455

數據范圍及提示?Data Size & Hint

對于30%的數據有1?≤?N≤?30,1?≤M≤?12。

對于50%的數據有1?≤?N≤?120,1?≤M≤?50,且4?種爬行卡片,每種卡片的張數不會超過20。

對于100%的數據有1?≤?N≤?350,1?≤M≤?120,且4?種爬行卡片,每種卡片的張數不會超過40;

0?≤?ai?≤?100,1?≤?i?≤?N;1?≤?bi?≤?4,1?≤?i?≤M。輸入數據保證N - 1=∑(1->M) bi

?

題意

求將m張卡片按一定順序排列后所能走出的最大分數。

題解

又是DP。。。

由于只有4種卡片,我們就要先定一個數組c儲存每種卡片的個數,再用一個4維數組f儲存最大值。Fi,j,k,l表示用i張卡片1,j張卡片2,k張卡片3,l張卡片4所能走出的最大分數總和,i,j,k,l的最小值都為0(即在起點的時候),最大值分別為c[1],c[2],c[3],c[4]。

于是代碼:

?

1 uses math; 2 var a:array[0..350] of longint; 3 var c:array[1..4] of integer;//儲存卡片數 4 var n,m,i,j,k,l,x,b:longint; 5 var f:array[-1..40,-1..40,-1..40,-1..40] of longint;//注意數組下界 6 begin 7 readln(n,m); 8 for i:=1 to n do read(a[i]); 9 for i:=1 to m do 10 begin 11 read(b); 12 inc(c[b]); 13 end; 14 for i:=0 to c[1] do 15 for j:=0 to c[2] do 16 for k:=0 to c[3] do 17 for l:=0 to c[4] do 18 begin 19 x:=i+j*2+k*3+l*4+1;//想想為什么要+1 20 f[i,j,k,l]:=max(max(max(f[i-1,j,k,l],f[i,j-1,k,l]),f[i,j,k-1,l]),f[i,j,k,l-1]);//求(取1前,取2前,取3前,取4前)4種情況的最大值 21 f[i,j,k,l]:=f[i,j,k,l]+a[x];//加上本身 22 end; 23 writeln(f[c[1],c[2],c[3],c[4]]);//輸出全部卡片用完的最優解 24 end. 25 26 CodeVS 1068-烏龜棋 CodeVS 1068-烏龜棋

?

?

?

?

版權聲明:本文為博主原創文章,未經博主允許不得轉載。

轉載于:https://www.cnblogs.com/HAdolf-HQY/p/6336773.html

總結

以上是生活随笔為你收集整理的CodeVS 1068-乌龟棋的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。