第九章 動態規劃-1273:【例9.17】貨幣系統

1273:【例9.17】貨幣系統

時間限制: 1000 ms 內存限制: 65536 KB
提交數: 6154 通過數: 2682
【題目描述】
給你一個n種面值的貨幣系統,求組成面值爲m的貨幣有多少種方案。

【輸入】
第一行爲n和m。

【輸出】
一行,方案數。

【輸入樣例】
3 10 //3種面值組成面值爲10的方案
1 //面值1
2 //面值2
5 //面值5
【輸出樣例】
10 //有10種方案


思路:設f[i]表示面值爲j得總方案數,如果f[j-a[i]] != 0,則f[j] = f[j] + f[j-a[i]] ,1<=i<=n,a[i]<=j<=m。

#include<cstdio>
#include<iostream>
#define N 10005
typedef long long ll;
using namespace std;
ll m,n,dp[N],a[N],i,j;
int main(){
    scanf("%d%d",&n,&m); 
		for(i = 1; i <= n; i++)
		cin >> a[i];
		dp[0] = 1;
		for(i = 1; i <= n; i++)
		   for(j = a[i];j <= m;j++)
			dp[j] += dp[j-a[i]];
		printf("%lld\n",dp[m]);
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章