HDU1712二维01背包

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1712

背包容量有考试门数和给的复习天数

状态转移公式:dp[i][j]=max(dp[i][j],dp[i-1][i-c[i]]+w[i]);

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int dp[105][105];
int matrix[105][105];
int main()
{
    int n,m;
    while(cin>>n>>m)
    {
        if(!n&&!m)
            break;
        int count=0;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                cin>>matrix[i][j];
            }
        }
        memset(dp,0,sizeof(dp));
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                for(int k=j;k>=0;k--)
                    dp[i][j]=max(dp[i][j],dp[i-1][j-k]+matrix[i][k]);
            }
        }
        cout<<dp[n][m]<<endl;
    }
    return 0;
}



你可能感兴趣的:(HDU1712二维01背包)