試題 算法訓(xùn)練 入學(xué)考試

試題 算法訓(xùn)練 入學(xué)考試(動態(tài)規(guī)劃)


問題描述
  辰辰是個(gè)天資聰穎的孩子,他的夢想是成為世界上最偉大的醫(yī)師。為此,他想拜附近最有威望的醫(yī)師為師。醫(yī)師為了判斷他的資質(zhì),給他出了一個(gè)難題。醫(yī)師把他帶到一個(gè)到處都是草藥的山洞里對他說:“孩子,這個(gè)山洞里有一些不同的草藥,采每一株都需要一些時(shí)間,每一株也有它自身的價(jià)值。我會給你一段時(shí)間,在這段時(shí)間里,你可以采到一些草藥。如果你是一個(gè)聰明的孩子,你應(yīng)該可以讓采到的草藥的總價(jià)值最大。”
  如果你是辰辰,你能完成這個(gè)任務(wù)嗎?
輸入格式
  第一行有兩個(gè)整數(shù)T(1 <= T <= 1000)和M(1 <= M <= 100),用一個(gè)空格隔開,T代表總共能夠用來采藥的時(shí)間,M代表山洞里的草藥的數(shù)目。接下來的M行每行包括兩個(gè)在1到100之間(包括1和100)的整數(shù),分別表示采摘某株草藥的時(shí)間和這株草藥的價(jià)值。
輸出格式
  包括一行,這一行只包含一個(gè)整數(shù),表示在規(guī)定的時(shí)間內(nèi),可以采到的草藥的最大總價(jià)值。
樣例輸入
70 3
71 100
69 1
1 2
樣例輸出
3
思路:
這道題就是一個(gè)01背包題,動態(tài)規(guī)劃 dp[j]表示當(dāng)前剩余容量為j背包的最優(yōu)情況。
我們先選第一個(gè)物品來求最優(yōu)解,然后不斷的添加物品來看當(dāng)前為t的最優(yōu)解就可以得到最大價(jià)值了。我們知道當(dāng)前物品容量大于當(dāng)前剩余容量是不可以裝的所以我們就讓剩余容量大于等于當(dāng)前物品容量。我們有2種取最優(yōu)解第1種就是本身的值,第二種就是當(dāng)前容量減去物品容量的最優(yōu)解加當(dāng)前物品的價(jià)值就是一種取法,然后我們的轉(zhuǎn)移方程就是:max(dp[j-k[i][0]]+k[i][1],dp[j])
程序:

t,n=map(int,input().split())
k=[]
for  i in range(n):
    k.append(list(map(int,input().split())))  #存入輸入
dp=[0 for i in range(t+2)]  #初始化
for i  in range(n):  #當(dāng)前的物品
    for j in range(t,k[i][0]-1,-1):  #當(dāng)前的剩余容量
        dp[j]=max(dp[j-k[i][0]]+k[i][1],dp[j])  #和之前的最優(yōu)解相比較在和減去當(dāng)前容量的最優(yōu)解加當(dāng)前的價(jià)值相互比較取最優(yōu)解
print(dp[t])

**禁止轉(zhuǎn)載。僅用于自己學(xué)習(xí)。對程序錯(cuò)誤不負(fù)責(zé)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • rqnoj 采藥問題 題目描述 辰辰是個(gè)天資聰穎的孩子,他的夢想是成為世界上最偉大的醫(yī)師。為此,他想拜附近最有威望...
    harvey_dong閱讀 2,889評論 1 0
  • 動態(tài)規(guī)劃題目 辰辰是個(gè)天資聰穎的孩子,他的夢想是成為世界上最偉大的醫(yī)師。為此,他想拜附近最有威望的醫(yī)師為師。醫(yī)師為...
    小熊_寶寶閱讀 719評論 0 0
  • 和分治法一樣,動態(tài)規(guī)劃(dynamic programming)是通過組合子問題而解決整個(gè)問題的解。 分治法是將問...
    Teci閱讀 5,670評論 0 70
  • P1048 采藥 輸入#1: 70 371 10069 11 2 輸出#1: 3 這是一道01背包的模板題,原本還...
    Chikcharry閱讀 421評論 0 0
  • 問題描述: 辰辰是個(gè)天資聰穎的孩子,他的夢想是成為世界上最偉大的醫(yī)師。為此,他想拜附近最有威望的醫(yī)師為師。醫(yī)師為了...
    mztkenan閱讀 557評論 0 0