您的位置:首页 > 其它

QUSTOJ1784 C 机器分配(DP)

2016-07-23 15:51 204 查看
题目给出矩阵是s[i][j]代表第i个公司分配j台机器的收益,因此可以设f[i][j]为i个公司分配j台机器的最大总收益,枚举k,f[i][j]可以取i-1个公司分配k台机器的最大受益加上第i个公司分配j-k台机器的和的最大值。

这不是区间动归??……

这是代码:

#include <bits/stdc++.h>
using namespace std;
int m,n,s[1001][1001],f[1001][1001];
void init()
{
int i,j;
scanf("%d %d",&m,&n);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
scanf("%d",&s[i][j]);
}
void solve()
{
int i,j,k,x;
for(i=1;i<=n;i++)
for(j=0;j<=m;j++)
for(k=0;k<=j;k++)
{
x=f[i-1][k]+s[i][j-k];
f[i][j]=max(f[i][j],x);
}
printf("%d",f
[m]);
}
int main()
{
init();
solve();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: