基础DP--硬币组合问题
hdu2069
给你五种硬币:1,5,10,25,50,现在给出一个n,求出用用这些组成价值n的种类数。(n<=250,硬币数量不超过100)
1)不完全解决方案(硬币数量无限制)
dp[i]:金额i对应的方案数
#include
using namespace std;
const int N=251;
int a[5]={1,5,10,25,50};
int dp[N];
int main(){int n;dp[0]=1;for(int i=0;i<5;i++)for(int j=a[i];j>n)cout<
2)解决方案
dp[i][j]:j个硬币实现金额i的方案数
#include
using namespace std;
const int K=100,N=250;
int dp[N+1][K+1];
int a[5]={1,5,10,25,50};
int main(){dp[0][0]=1;for(int i=0;i<5;++i)for(int j=1;j<=K;++j)for(int k=a[i];k<=N;++k)dp[k][j]+=dp[k-a[i]][j-1];int ans[N+1]={0};for(int i=0;i<=N;i++)for(int j=0;j<=K;j++)ans[i]+=dp[i][j];int n;while(cin>>n)cout<
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
