【题解】代金券组合

代金券组合

http://www.nowcoder.com/questionTerminal/5d2405da8d364eafbaca1de9bc2a0d4e

表示实现凑价格 最少需要几张优惠券,那么 就是要求的结果。
对于每张优惠券。都遍历一遍 。看一下加上这张优惠券能不能有更好的效果。

#include<iostream>

using namespace std;

const int INF = 0x3f3f3f3f;
int main()
{
    int P;
    int dp[10010]={0};
    while(cin >> P && P!=0)
    {
        int N;
        cin >> N;
        int v;
        for(int i = 0 ; i <= P ; i++)
        {
            dp[i]=INF;
        }
        for(int i = 0 ; i < N ; i++)
        {
            cin >>v;
            dp[v] = 1;//有价值为v的优惠券,那么v的价格就可以用一张优惠券拼成 这个一定是最优的方案
            for(int i = v+1 ; i <= P ; i++)
            {
                if(dp[i-v]!=INF)//如果i-v有方案那说明i的价格可以从i-v加一张价值为v的优惠券拼成
                {
                    dp[i]=min(dp[i],dp[i-v]+1); //看一下可不可以更优
                }
            }
        }
        if(dp[P]==INF)
        {
            cout<<"Impossible"<<endl;
        }
        else{
            cout<<dp[P]<<endl;
        }
    }
    return 0;
}
全部评论

相关推荐

小鸡蛋吃布丁:上岸编制,考个偏远的四五线小县城的话那确实难度不高,工资三四千的,但是考发达地区的纯看实力和运气了
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
炫哥_:哥们项目描述里面vector和mysql之类的都要写吗,直接开头技术栈巴拉巴拉就行了,完全不是技术点啊
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务