首页 > 其他 > 详细

SPOJ Problem 346:Bytelandian gold coins

时间:2015-03-05 20:47:37      阅读:274      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!