题目链接:https://projecteuler.net/problem=31
完全背包
代码:
#include<bits/stdc++.h>
using namespace std;
const int MAXN=205;
int val[]={1,2,5,10,20,50,100,200};
int dp[MAXN];
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
dp[0]=1;
for(int i=0;i<8;i++)
{
int x=val[i];
for(int j=0;j+x<MAXN;j++)
{
dp[j+x]+=dp[j];
}
}
printf("%d\n",dp[200]);
return 0;
}