zoukankan      html  css  js  c++  java
  • dp之多维背包hdu2159

    二维背包问题,我是觉得这个题目数据比较水,虽然它最后说了怪可以无限个,但是它却只能最多杀s个,也就是所有品种的怪最多为s个,那么就是二维完全背包的问题了.......同时,它没有说一定要杀s只怪,所以在初始化全部赋值为0即可.......

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    int dp[105][105],t[105][2];
    int main()
    {
        int n,m,k,s;
        while(scanf("%d %d %d %d",&n,&m,&k,&s)>0)
        {
            for(int i=1;i<=k;i++)
            scanf("%d %d",&t[i][0],&t[i][1]);
            memset(dp,0,sizeof(dp));
            for(int i=1;i<=k;i++)
            {
                for(int j=0;j<=s;j++)
                {
                    for(int kk=0;kk<=m;kk++)
                    {
                        if(j>0&&kk>=t[i][1]&&dp[j-1][kk-t[i][1]]+t[i][0]>dp[j][kk])
                        {
                            dp[j][kk]=dp[j-1][kk-t[i][1]]+t[i][0];
                            //printf("%d
    ",dp[j][kk]);
                        }
                    }
                }
            }
            //printf("%d
    ",dp[s][m]);
            if(dp[s][m]<n)
            printf("-1
    ");
            else
            {
                int maxn=10000000,x,y;
                for(int i=0;i<=s;i++)
                for(int j=0;j<=m;j++)
                if(n<=dp[i][j]&&j<maxn)
                maxn=j;
                printf("%d
    ",m-maxn);
            }
        }
        return 0;
    }
    
  • 相关阅读:
    python之元组
    python之dict
    python之list
    python之str字符串
    python之for循环
    Python的基本语法2
    Python的基本语法1
    初识python
    JS获取当天是周几
    EXCLE导入数据库
  • 原文地址:https://www.cnblogs.com/ziyi--caolu/p/3222683.html
Copyright © 2011-2022 走看看