#include<iostream>
#include<algorithm>
#include<cstdio>
#include<string>
#include<vector>
#include<string.h>
#include<map>
#include<cmath>
#include<queue>
#define ll long long
#define INF 0x7fffffff
#define MAX 0x3f3f3f3f
#define maxn 100005
#define ull unsigned long long
using namespace std;
int dp[32775];//完全背包
int main()
{
int n,i,j,mon[3]={1,2,3};//三种钱币面额
while(~scanf("%d",&n))
{
memset(dp,0,sizeof(dp));
dp[0]=1;//初始化勿忘
for(i=0;i<3;i++)//钱币面额遍历在外
{
for(j=mon[i];j<=n;j++)//从面额到凑够所需钱数
dp[j]+=dp[j-mon[i]];//凑的过程中的中间值的叠加
}
printf("%d\n",dp[n]);
}
return 0;
}
基础dp hdu1284钱币兑换问题
最新推荐文章于 2022-05-05 19:38:43 发布