题目链接:
HDU 1712 ACboy needs your help
题意:
有n门课程和m天的学习时间,在第i门课上学习j天可获得的效益是a[i][j],问m天学习这些课程可以获得的最大效益是多少?
分析:
简单01背包。
注意:
枚举第i门课的学习时间应从0开始。
//1508K 62MS
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAX_N=110;int n,m;
int val[MAX_N][MAX_N],dp[MAX_N][MAX_N];int main()
{while(~scanf("%d%d",&n,&m)&&(n||m)){for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%d",&val[i][j]);}}memset(dp,0,sizeof(dp));for(int i=1;i<=n;i++){for(int j=0;j<=m;j++){ //从j=1枚举,wrong answer!for(int k=0;k<=j;k++){ dp[i][j]=max(dp[i][j],dp[i-1][j-k]+val[i][k]);}}}printf("%d\n",dp[n][m]);}return 0;
}