您的位置:首页 > 其它

|Tyvj|动态规划|P1203 机器分配

2016-08-02 10:02 190 查看
http://tyvj.cn/p/1203

dp题,设f[i][j]为前i个公司分配j个机器的最大盈利,设v为第I个公司分配J台机器的盈利 

     则f[i][j] = max{f[i-1][k]+v[i][j-k]}

     答案是max{f
[j]}   注意机器不一定要全部分完m个!

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main ()
{
const int maxnm = 100 + 5;
int map[maxnm][maxnm];
int n,m;
scanf("%d%d", &n, &m);
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
scanf("%d", &map[i][j]);
int maxf=-1;
int f[maxnm][maxnm];
f[1][0] = 0;
for (int i=1; i<=m; i++) f[1][i] = map[1][i];
for (int i=2; i<=n; i++)
{
for (int j=0; j<=m; j++)
{
f[i][j] = 0;
for (int k=0; k<=j; k++)
{
f[i][j] = max(f[i][j], f[i-1][k]+map[i][j-k]);
}
if (i==n)
maxf = max(maxf, f[i][j]);
}
}
printf("%d\n", maxf);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: