HDU1712ACboy needs your help
题意&思路:
给你课程的数目和总时间,以及每个课程学习i天的收益ai。求最大的收益。
分组背包模板题,每个课程作为一个集合,最多只能选一次。
代码:
#include<bits/stdc++.h>
const int N=1e6+10;
const int mod=1e7+9;
const int maxn=0x3f3f3f3f;
const int minn=0xc0c0c0c0;
const int inf=99999999;
using namespace std;
int a[110][110],dp[110];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int n,m;
while(cin>>n>>m)
{
if(n==0 && m==0)
break;
int i,j,k;
memset(dp,0,sizeof(dp));
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
cin>>a[i][j];
for(i=1;i<=n;i++)
for(j=m;j>0;j--)
for(k=1;k<=m;k++)
if(j-k>=0)
dp[j]=max(dp[j],dp[j-k]+a[i][k]);
cout<<dp[m]<<endl;
}
return 0;
}