zoukankan      html  css  js  c++  java
  • 简单分组背包ACboy needs your help(hdu1712)

    题意:有n个任务,完成期限是m天,a[i][j]代表第i个任务用j天完成可以获得的利益,问在这m天里面可以获得的最大利益,每次只能做一个任务,即多个任务不能同时做;

    分析;用dp[i][j]代表在做第i个任务的时候j天获得的最大利益;

    #include"stdio.h"
    #include"string.h"
    #include"stdlib.h"
    #include"algorithm"
    #include"math.h"
    #define M 109
    #define inf 0x3f3f3f3f
    #define eps 1e-10
    using namespace std;
    int dp[M][M],a[M][M];
    int main()
    {
        int n,m,i,j,k;
        while(scanf("%d%d",&n,&m),n||m)
        {
            memset(a,0,sizeof(a));
            for(i=1;i<=n;i++)
            {
                for(j=1;j<=m;j++)
                    scanf("%d",&a[i][j]);
            }
            memset(dp,0,sizeof(dp));
            for(i=1;i<=n;i++)
            {
                for(j=1;j<=m;j++)
                {
                    dp[i][j]=max(dp[i][j],a[i][j]);
                    for(k=0;k<=j;k++)
                    {
                        dp[i][j]=max(dp[i][j],dp[i-1][j-k]+a[i][k]);
                    }
                }
            }
            printf("%d
    ",dp[n][m]);
        }
    }
    


  • 相关阅读:
    上传文件事件并校验:event.target.files && event.target.files[0]
    深浅拷贝
    Git学习
    Flex弹性布局
    hive
    222
    错误总结
    Redis小结2
    spark小结
    kafka详解
  • 原文地址:https://www.cnblogs.com/mypsq/p/4348100.html
Copyright © 2011-2022 走看看