国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

動態規劃的背包問題——小A點菜

2019-11-11 04:22:47
字體:
來源:轉載
供稿:網友

題目背景

uim神犇拿到了uoi的ra(鐳牌)后,立刻拉著基友小A到了一家……餐館,很低端的那種。

uim指著墻上的價目表(太低級了沒有菜單),說:“隨便點”。

題目描述

不過uim由于買了一些輔(e)輔(ro)書,口袋里只剩M元(M<=10000)。

餐館雖低端,但是菜品種類不少,有N種(N<=100),第i種賣ai元(ai<=1000)。由于是很低端的餐館,所以每種菜只有一份。

小A奉行“不把錢吃光不罷休”,所以他點單一定剛好吧uim身上所有錢花完。他想知道有多少種點菜方法。

由于小A肚子太餓,所以最多只能等待1秒。

輸入輸出格式

輸入格式: 第一行是兩個數字,表示N和M。

第二行起N個正數ai(可以有相同的數字,每個數字均在1000以內)。

輸出格式: 一個正整數,表示點菜方案數。

輸入輸出樣例

輸入樣例#1: 4 4 1 1 2 2 輸出樣例#1: 3

DP: f[i]表示用i元可以買的最大方案總數。 f[i]:=f[i]+f[j-a[i]] (1<=i<=n;m>=j>=a[i])

時間復雜度:O(n*m)

var f:array [0..10001] of longint; a:array [0..101] of longint; i,j,m,n:longint;begin readln(n,m); for i:=1 to n do read(a[i]); fillchar(f,sizeof(f),0); f[0]:=1; for i:=1 to n do for j:=m downto a[i] do f[j]:=f[j]+f[j-a[i]]; writeln(f[m]);end.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平乡县| 阿克| 普兰县| 阿坝县| 霍城县| 梅州市| 昌邑市| 昂仁县| 泊头市| 新巴尔虎右旗| 东山县| 岳阳县| 襄樊市| 富平县| 宁远县| 六盘水市| 虎林市| 金湖县| 开原市| 宝坻区| 泸水县| 淄博市| 昭平县| 巢湖市| 安平县| 随州市| 富裕县| 永靖县| 苏尼特右旗| 望城县| 阳高县| 佛冈县| 达日县| 石家庄市| 扎赉特旗| 多伦县| 灵丘县| 南岸区| 灵台县| 邓州市| 肃南|