题意: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;
}
本文介绍了一个基于动态规划的算法,用于解决在多个商店中销售CPU以获得最大利润的问题。通过构建二维DP数组,该算法能够有效地计算出在每个商店销售不同数量CPU所能达到的最大价值。
287

被折叠的 条评论
为什么被折叠?



