码迷,mamicode.com
首页 > 其他好文 > 详细

SPOJ Problem 346:Bytelandian gold coins

时间:2015-03-05 20:47:50      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

有一种价值n的硬币能换成n/2,n/3,n/4的三个硬币,要求硬币价值的和尽可能多。

前十万打表,后面就BFS。。。

#include<cstdio>
#include<cstring>
int a[100005];
int q[100005],l,r,t,i,n;
long long ans;
int main(){
    for (i=0;i<=100000;i++){
        a[i]=a[i/2]+a[i/3]+a[i/4];
        if (i>a[i])a[i]=i;
    }
    while(scanf("%d",&n)!=EOF){
        l=0;r=1;ans=0;
        memset(q,0,sizeof(q));
        q[1]=n;
        while(l<r){
            t=q[++l];
            if (t<=100000)ans+=a[t];
            else {
                q[++r]=t/2;
                q[++r]=t/3;
                q[++r]=t/4;
            }
        }
        printf("%lld\n",ans);
    }
}

 

SPOJ Problem 346:Bytelandian gold coins

标签:

原文地址:http://www.cnblogs.com/moris/p/4316577.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!