51nod 1101 换零钱(dp)

来源:互联网 发布:阿里云虚拟主机修改php 编辑:程序博客网 时间:2024/06/05 08:47

题目链接:传送门
背包题
状态转移方程式 dp[i]=dp[i-coin[j]]+dp[i]%mod
其中coin[J]是1 2 5 10 20 50…i是总钱
代码如下:

#include <bits/stdc++.h>using namespace std;#define N 100100#define mod 1000000007#define inf 2000000000000000llint dp[N];int main(){    int i,j,n,m;    cin>>n;    int coin[14]={1,2,5,10,20,50,100,200,500,1000,2000,5000,10000};    memset(dp,0,sizeof(dp));    dp[0]=1;    for(j=0;j<13;j++){        for(i=coin[j];i<=n;i++)            dp[i]=(dp[i-coin[j]]%mod+dp[i])%mod;    }    cout<<dp[n]<<endl;    return 0;}
0 0