题解 P1474 【货币系统 Money Systems】
dengyaotriangle · · 题解
看没有写C++短代码题解的就来一发~
这题就是一个完全背包问题
dp方程 x(i)=sum(x(i-h(j)) 边界x(0)=1
其中x(i)代表凑成i元有x(i)种方法,h(j)代表第j个货币的面值
#include<bits/stdc++.h>
long long v,n,h[30],dp[10005]={1};
int main(){
std::cin>>v>>n;
for(int i=0;i<v;i++) std::cin>>h[i];
for(int i=0;i<v;i++)for(int j=h[i];j<=n;j++) dp[j]+=dp[j-h[i]];
std::cout<<dp[n];
return 0;
}