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

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

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

2019-11-11 03:48:15
字體:
來源:轉載
供稿:網友

題目背景

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.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新疆| 杨浦区| 龙泉市| 南漳县| 娄底市| 上思县| 乐平市| 微博| 乌拉特中旗| 抚松县| 宁津县| 利辛县| 淳化县| 泉州市| 都江堰市| 岳阳市| 威海市| 金平| 乌审旗| 南汇区| 房产| 都兰县| 长治市| 托克逊县| 辽中县| 绿春县| 济南市| 建平县| 荣昌县| 潜山县| 南丹县| 宁都县| 灵武市| 依安县| 扎囊县| 喀喇沁旗| 瓮安县| 临湘市| 深州市| 汉中市| 永靖县|