题意:m个商店,c个cpu,只能与同一个商店交易一次,已知第i个商店买j个cpu的价格为a[i][j],求卖c个cpu最多可以获得多少钱
分析:dp
dp[i][j]表示在第i个商店,销售j个cpu的最大值
#include<bits/stdc++.h>
using namespace std;
int c,m;
int a[110][110];
int dp[110][110]; //dp[i][j]储存在第i个商家时,已经销售了j个CPU最大值
int main()
{
scanf("%d%d",&c,&m);
for(int i=1;i<=m;i++)
for(int j=1;j<=c;j++)
scanf("%d",&a[i][j]);
int ans=0;
for(int i=1;i<=c;i++)
{
dp[1][i]=a[1][i];
ans=max(dp[1][i],ans);
}
for(int i=2;i<=m;i++)
{
for(int j=1;j<=c;j++) // 求在第i个商家时,销售j个cpu的最大值
{
for(int k=0;k<=j;k++)
dp[i][j]=max(dp[i][j],dp[i-1][j-k]+a[i][k]);
ans=max(ans,dp[i][j]);
}
}
printf("%d\n",ans);
return 0;
}