題目背景
uim神犇拿到了uoi的ra(鐳牌)後,立刻拉著**小a到了一家……餐館,很低端的那種。
uim指著牆上的價目表(太低階了沒有選單),說:「隨便點」。
題目描述
不過uim由於買了一些輔(e)輔(ro)書,口袋裡只剩mm元(m \le 10000)(m≤10000)。
餐館雖低端,但是菜品種類不少,有nn種(n \le 100)(n≤100),第ii種賣a_ia
i 元(a_i \le 1000)(a
i ≤1000)。由於是很低端的餐館,所以每種菜只有乙份。
小a奉行「不把錢吃光不罷休」,所以他點單一定剛好吧uim身上所有錢花完。他想知道有多少種點菜方法。
由於小a肚子太餓,所以最多只能等待11秒。
輸入輸出格式
輸入格式:
第一行是兩個數字,表示nn和mm。
第二行起nn個正數a_ia
i (可以有相同的數字,每個數字均在10001000以內)。
輸出格式:
乙個正整數,表示點菜方案數,保證答案的範圍在intint之內。
輸入輸出樣例
輸入樣例#1:
4 41 1 2 2
輸出樣例#1:
3
這就是一道特別特別簡單的揹包,就是01揹包的變形,改乙個符號就行了。
所以呢?這道題真的不難。
思路:這和01揹包不同的就是01揹包是求最大值,這個是求方案數。
首先輸入(這句話一定沒有人敢反駁),然後就開始我們的重頭大戲:dp。
首先我們根據題意可以得出狀態轉移方程:
dp[j]+=dp[j-a[i]];
接下來就直接開始**實現吧。
#includeusing namespace std;
int a[1000];
int dp[1000];
int n,m;
int v;
int main()
dp[0]=1;//賦初始值
for(int i=1;i<=n;i++)
}cout << dp[m];//輸出
return 0;
}//ac
洛谷 P1164 小A點菜
不過uim由於買了一些輔 e 輔 ro 書,口袋裡只剩m元 m 10000 餐館雖低端,但是菜品種類不少,有n種 n 100 第i種賣ai元 ai 1000 由於是很低端的餐館,所以每種菜只有乙份。小a奉行 不把錢吃光不罷休 所以他點單一定剛好吧uim身上所有錢花完。他想知道有多少種點菜方法。由於小...
洛谷P1164 小A點菜
題目背景 uim神犇拿到了uoi的ra 鐳牌 後,立刻拉著 小a到了一家 餐館,很低端的那種。uim指著牆上的價目表 太低階了沒有選單 說 隨便點 題目描述 不過uim由於買了一些輔 e 輔 ro 書,口袋裡只剩m元 m 10000 餐館雖低端,但是菜品種類不少,有n種 n 100 第i種賣ai元 ...
洛谷 P1164 小A點菜
uim神犇拿到了uoi的ra 鐳牌 後,立刻拉著 小a到了一家 餐館,很低端的那種。uim指著牆上的價目表 太低階了沒有選單 說 隨便點 不過uim由於買了一些輔 e 輔 ro 書,口袋裡只剩m元 m 10000 餐館雖低端,但是菜品種類不少,有n種 n 100 第i種賣ai元 ai 1000 由於...