题目给出矩阵是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[n][m]);
}
int main()
{
init();
solve();
return 0;
}
本文介绍了一个区间动态规划问题,通过具体实例讲解了如何利用动态规划求解最大总收益问题。文章给出了详细的算法实现过程及核心代码,帮助读者理解动态规划在实际问题中的应用。
1217

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



