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

紫书---P60硬币问题

时间:2014-11-18 14:43:05      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   os   sp   for   div   问题   

紫书---P60硬币问题

 ------完全背包、DP

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define INF 0x3f3f3f3f
#define N 1010

int n,s;
int w[N];             //w表示n种硬币的面值
int dp1[N];           //dp1[j]表示刚好凑足j的最少硬币数
int dp2[N];           //dp2[j]表示刚好凑足j的最多硬币数

int main()
{
    int i,j;
    while(scanf("%d%d",&n,&s)!=EOF)
    {
        memset(dp1,INF,sizeof(dp1));
        memset(dp2,-INF,sizeof(dp2));
        dp1[0]=0;
        dp2[0]=0;
        
        for(i=1;i<=n;i++)
        {
            scanf("%d",&w[i]);
        }

        for(i=1;i<=n;i++)
        {
            for(j=w[i];j<=s;j++)
            {
                dp1[j]=min(dp1[j],dp1[j-w[i]]+1);
                dp2[j]=max(dp2[j],dp2[j-w[i]]+1);
            }
        }
        cout<<dp1[s]<< <<dp2[s]<<endl;
    }
    return 0;
}

 

紫书---P60硬币问题

标签:style   blog   io   color   os   sp   for   div   问题   

原文地址:http://www.cnblogs.com/hate13/p/4105701.html

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