• ACboy needs your help(分组背包)


    ACboy has N courses this term, and he plans to spend at most M days on study.Of course,the profit he will gain from different course depending on the days he spend on it.How to arrange the M days for the N courses to maximize the profit? 

    Input

    The input consists of multiple data sets. A data set starts with a line containing two positive integers N and M, N is the number of courses, M is the days ACboy has. 
    Next follow a matrix A[i][j], (1<=i<=N<=100,1<=j<=M<=100).A[i][j] indicates if ACboy spend j days on ith course he will get profit of value A[i][j]. 
    N = 0 and M = 0 ends the input. 
    Output

    For each data set, your program should output a line which contains the number of the max profit ACboy will gain. 
    Sample Input

    2 2
    1 2
    1 3
    2 2
    2 1
    2 1
    2 3
    3 2 1
    3 2 1
    0 0

    Sample Output

    3
    4
    6
    题目大意:
    先输入n,m代表n个课程和有m天,在输入n*m的矩阵,分别代表经历j天在i课程上,得到的一个权值,求大的权值。
    #include <iostream>
    #include <cstring>
    using namespace std;
    int a[105][105],dp[105];
    int n,m;
    int main()
    {
        while(cin>>n>>m,n||m)
        {
            memset(dp,0,sizeof dp);
            for(int i=1;i<=n;i++)
                for(int j=1;j<=m;j++)
                    cin>>a[i][j];
            for(int i=1;i<=n;i++)
                for(int j=m;j>=1;j--)
                    for(int k=1;k<=j;k++)///枚举在i课程的天数
                        dp[j]=max(dp[j],dp[j-k]+a[i][k]);
            cout<<dp[m]<<'
    ';
        }
        return 0;
    }
    
    
    
     
  • 相关阅读:
    git connection due to public key issue
    ubuntu search and java write to file
    url
    sort by datetime
    work on ui
    PHP工厂方法模式
    PHP的简单工厂模式
    php如何判断数组是一维还是多维
    nginx搭建分布式简单配置
    python的单例模式
  • 原文地址:https://www.cnblogs.com/zdragon1104/p/9188990.html
Copyright © 2020-2023  润新知