51Nod 1051 最大子矩阵和
时间:2022-05-08
本文章向大家介绍51Nod 1051 最大子矩阵和,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
基准时间限制:2 秒 空间限制:131072 KB 分值: 40 难度:4级算法题
一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值。
例如:3*3的矩阵:
-1 3 -1
2 -1 3
-3 1 2
和最大的子矩阵是:
3 -1
-1 3
1 2
Input
第1行:M和N,中间用空格隔开(2 <= M,N <= 500)。
第2 - N + 1行:矩阵中的元素,每行M个数,中间用空格隔开。(-10^9 <= M[i] <= 10^9)
Output
输出和的最大值。如果所有数都是负数,就输出0。
Input示例
3 3
-1 3 -1
2 -1 3
-3 1 2
Output示例
7
复习了一下n^3最大子矩阵的写法
注意在写前缀和的时候别忘了左端点的坐标是i-1不是i
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<cmath>
5 #define LL long long
6 using namespace std;
7 const LL MAXN=2001;
8 inline LL read()
9 {
10 char c=getchar();LL flag=1,x=0;
11 while(c<'0'||c>'9') {if(c=='-') flag=-1;c=getchar();}
12 while(c>='0'&&c<='9') x=(x*10+c-48),c=getchar(); return x*flag;
13 }
14 LL n,m;
15 LL a[MAXN][MAXN];
16 LL sum[MAXN][MAXN];
17 int main()
18 {
19 memset(sum,0,sizeof(sum));
20 m=read(),n=read();
21 for(LL i=1;i<=n;i++)
22 for(LL j=1;j<=m;j++)
23 a[i][j]=read(),sum[i][j]=sum[i-1][j]+a[i][j];
24 LL ans=0;
25 for(LL i=1;i<=n;i++)
26 for(LL j=i;j<=n;j++)
27 {
28 LL now=0;
29 for(LL k=1;k<=m;k++)
30 {
31 now=now+sum[j][k]-sum[i-1][k],
32 now=max(now,(long long )0),
33 ans=max(ans,now);
34 }
35
36 }
37 printf("%lld",ans);
38 return 0;
39 }
- String中的null,以及String s;等区别详解
- Shell编程——Shell中的数学运算
- 如何利用微信监管你的TF训练?
- python 安装spark_Spark环境搭建 (Python)
- MongoDB触发oom-killer的简单处理(一)(r7笔记第54天)
- int与integer的区别
- java 自动装箱与拆箱
- python读取文件——python读取和保存mat文件
- python 利用递归实现全排列
- java中 == 与 equal 的区别
- python基础知识——字符串
- python 实现数据降维推荐系统(附Python源码)
- MYSQL数据导出与导入,secure_file_priv参数设置
- numpy 参数(一) —— np.linalg
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 使用mac上自带的apache,php
- 用孔子和老子的思想来分析忍者代码
- 省略号——中英文以及数字1旁边的差异
- 两有序数组间相加的TOPK问题
- 关于url传值的问题—encodeURIComponent
- Markdown 调整图片位置与大小
- 展开与折叠菜单动画
- Vue 中使用Pug
- curl在raw.githubusercontent.com下载文件时出现无法链接问题
- linux查看端口进程信息—lsof工具
- vscode配置:双击选中连字符
- 实现简单登陆注册功能流程分析
- centos系统中yum安装应用出现doesn't have enough cached
- Mac os上显示与隐藏文件
- windows启动tomcat闪退,乱码问题解决