poj1050

i, j 代表列

用前缀和预处理出i,j之间的和

枚举i,j 那么i到j之间的和就相当于最长连续字段和的一位,对n行都做相同处理,再做一遍最长连续字段和即可。

最长连续字段和的 dp方程 dp[i] = max(dp[i-1] + a[i], a[i]);

复制代码
 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <algorithm>
 4 using namespace std;
 5 int n, a[110][110], sum[110][110], tmp[110], dp[110], ans;
 6 int main()
 7 {
 8     scanf("%d", &n);
 9     for (int i = 1; i <= n; i++)
10         for (int j = 1; j <= n; j++)
11             scanf("%d", &a[i][j]);
12     for (int i = 1; i <= n; i++)
13         for (int j = 1; j <= n; j++)
14             sum[i][j] += sum[i][j-1] + a[i][j];
15     for (int i = 1; i <= n; i++)
16         for (int j = i; j <= n; j++){
17             memset(dp, 0, sizeof(dp));
18             for (int k = 1; k <= n; k++)
19             {
20                 tmp[k] = sum[k][j] - sum[k][i-1];
21             }
22             for(int l = 1; l <= n; l++)
23             {
24                 dp[l] = max(dp[l-1] + tmp[l], tmp[l]);
25                 if(dp[l] > ans)ans = dp[l];
26             }
27         }
28     printf("%d\n", ans);
29 }
复制代码

 

posted @   z52527  阅读(222)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
阅读排行:
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· .NET 9 new features-C#13新的锁类型和语义
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 《SpringBoot》EasyExcel实现百万数据的导入导出
历史上的今天:
2014-08-01 变量交换
2014-08-01 a+b问题与圆柱体表面积的计算
2014-08-01 算数表达式的练习
点击右上角即可分享
微信分享提示