• hdu 1712 ACboy needs your help


    题目:

            链接:点击打开链接

    题意:

            n个课程m天完毕,a[i][j]表示用j天完毕第i个课程得到的价值,求最大价值。

    算法:

            分组背包。

    思路:

            m天是总容量,n是组数。

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    
    int n,m;
    int a[110][110];
    int dp[110];
    
    int main()
    {
        //freopen("input.txt","r",stdin);
        while(scanf("%d%d",&n,&m) != EOF && (n || m))
        {
            memset(a,0,sizeof(a));
            for(int i=0; i<n; i++)
            {
                for(int j=1; j<=m; j++)
                {
                    scanf("%d",&a[i][j]);
                }
            }
            memset(dp,0,sizeof(dp));
            for(int i=0; i<n; i++)
            {
                for(int j=m; j>=0; j--)
                {
                    for(int k=1; k<=m; k++)
                    {
                        if(j >= k)//要推断k是小于剩余天数j的
                            dp[j] = max(dp[j] , dp[j-k]+a[i][k]);
                    }
                }
            }
            printf("%d
    ",dp[m]);
        }
        return 0;
    }
    


  • 相关阅读:
    迷 宫
    车厢调度
    快速幂
    2804 最大最小数质因数
    3022 西天收费站
    2291 糖果堆
    1464 装箱问题 2
    Exists/In/Any/All/Contains操作符
    window.onscroll
    zIndex 属性设置元素的堆叠顺序。
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6937242.html
Copyright © 2020-2023  润新知