题目大意:
给你一定数额的钱,用1,5,10,25,50这几种钱币组合,有多少种组合成给定钱数的方法;
解题思路:
完全背包入门的题目,dp[j]表示钱币为i的时候方法数,那么每用到一种钱币,就加上dp[j-cost[i]]即可;
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define maxn 8000
int main()
{
int n;
int dp[maxn]={0};
int cost[5]={1,5,10,25,50};
dp[0]=1;
for(int i=0;i<5;i++)
{
for(int j=cost[i];j<=maxn;j++)
dp[j]+=dp[j-cost[i]];
}
while(~scanf("%d",&n))
{
printf("%d\n",dp[n]);
}
}