• 完全背包问题 POJ1384


    完全背包即物品的数量不收限制,

    根据01背包的思想,因为每件物品只能选1个,则要求我们不能依赖已选择物品i的选项的时候,所以需要逆序遍历

    则在完全背包问题中,我们需要正序遍历。

    此题时要求求出最小价值。

    代码如下:

    #include <stdio.h>
    #include <algorithm>
    using namespace std;
    #define inf 10000000  
    #define min(a,b) a<b?a:b
    int dp[11000];
    int p[600];
    int w[600];
    
    int main()
    {
        int i,j,k,n,e,f;
        scanf("%d",&k);
        while(k--)
        {
            scanf("%d",&e);
            scanf("%d",&f);
            int diff = f - e;
            scanf("%d",&n);
            for(i=1;i<=n;i++)
            {
                scanf("%d",&p[i]);
                scanf("%d",&w[i]);
            }
            //memset(dp,inf,sizeof(dp));//不可以这样初始化
            for(int i=0;i<=diff;i++)  
            {  
                dp[i]=inf;  
            }  
            dp[0] = 0;
            for(i=1;i<=n;i++)
            {
                for(j=w[i];j<=diff;j++)
                {                
                    dp[j] = min(dp[j],dp[j-w[i]]+p[i]);        
                }
            }
            if(dp[diff] == inf){printf("This is impossible.
    ");}
            else
            {
                printf("The minimum amount of money in the piggy-bank is %d.
    ",dp[diff]);
            }
        }    
        system("pause");
        return 0;
    }
  • 相关阅读:
    Python注释
    RSA算法知识
    Ubuntu 14.04安装QQ2012
    学习Linux的好网站
    Linux编程学习笔记 -- Process
    Python urllib2 模块学习笔记
    Django Tutorial 学习笔记
    Java学习笔记:语言基础
    Python中的正则表达式
    读书笔记:黑客与画家
  • 原文地址:https://www.cnblogs.com/yueyanglou/p/5354757.html
Copyright © 2020-2023  润新知