uva 147 Dollars 简单dp

来源:互联网 发布:淘宝快速冲销量的方法 编辑:程序博客网 时间:2024/05/01 21:22
#include<iostream>#include<cstdio>#include<cstdlib>#include<cmath>#include<string>#include<cstring>#include<algorithm>#include<queue>#include<stack>#include<map>using namespace std;const int NUM_COINS=11;const int MAXN=30000;double coins[NUM_COINS]={10000,5000,2000,1000,500,200,100,50,20,10,5};long long d[MAXN+5][NUM_COINS];long long dp(int x,int y){    if(d[x][y]!=-1)return d[x][y];    d[x][y]=0;    if(y==NUM_COINS-1)    {        return d[x][y]=1;    }    for(int i=0;;i++)    {        if(x-coins[y]*i>=0)        {            d[x][y]+=dp(x-coins[y]*i,y+1);        }        else            break;    }    return d[x][y];}int main(){    //freopen("in.txt","r",stdin);    double n;    memset(d,-1,sizeof(d));    while(cin>>n)    {        double nn=int(n*100+0.05);        if(nn==0)break;        long long m=dp(nn,0);        printf("%6.2f%17lld\n",n,m);    }    return 0;}

0 0