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

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

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

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

題目背景

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.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁陵县| 蓬莱市| 全州县| 哈密市| 宁陕县| 宜宾市| 冕宁县| 准格尔旗| 通许县| 南开区| 罗江县| 定西市| 南涧| 南郑县| 庄浪县| 宣汉县| 茌平县| 太仆寺旗| 同心县| 兖州市| 淮南市| 南岸区| 建湖县| 年辖:市辖区| 蓝田县| 定襄县| 四子王旗| 株洲县| 汾西县| 图木舒克市| 宁都县| 青浦区| 恭城| 九台市| 饶河县| 重庆市| 桂东县| 石棉县| 昭通市| 桂东县| 饶河县|