最大子阵
最大
2023-06-13 09:18:28 时间
题目描述
给定一个n*m的矩阵A,求A中的一个非空子矩阵,使这个子矩阵中的元素和最大。
其中,A的子矩阵指在A中行和列均连续的一块。
样例说明
取最后一列,和为10。 数据规模和约定 对于100%的数据,1< =n, m< =500,A中每个元素的绝对值不超过5000。
输入
输入的第一行包含两个整数n, m,分别表示矩阵A的行数和列数。 接下来n行,每行m个整数,表示矩阵A。
输出
输出一行,包含一个整数,表示A中最大的子矩阵中的元素和。
样例输入
3 3
-1 -4 3
3 4 -1
-5 -2 8
样例输出
10
思路:
用up,down,left,right框定出子阵,用 sum 表示子阵的值,然后与Max进行比较,如果sum值>Max,赋值给Max,直到Max为最大值。
代码
#include <iostream>
using namespace std;
const int inf = 0x3f3f3f3f;
int a[60][60];
int main()
{
int n,m;
cin>>n>>m;
for(int i = 0;i<n;i++){
for(int j = 0;j<m;j++){
cin>>a[i][j];
}
}
int Max = -inf;
for(int up = 0; up < n;up ++){
for(int down = up;down < n; down++){
for(int left = 0;left <m;left++){
for(int right = left; right < m;right ++){
int sum = 0;
for(int k = up;k<=down;k++){
for(int l = left;l<=right;l++){
sum +=a[k][l];
}
}
if(sum>Max){
Max = sum;
}
}
}
}
}
cout << Max<< endl;
return 0;
}
相关文章
- GPU出货量现20年来最大跌幅!英伟达游戏显卡价格腰斩,AMD仍在观望
- 中国需求大减10.1%!日本电子零件出货额11月萎缩2.7%,创2年来最大减幅
- 西数展示全球最大机械硬盘内部:8碟12TB、充氦封装
- 值MySQL中ID最大值的探究(mysqlid最大)
- 利用Redis让内存数据库发挥最大威力(redis内存数据库)
- Oracle动态创建视图:实现最大效率(oracle动态创建视图)
- 广汽丰田全新汉兰达下线:首搭混动 车身尺寸史上最大
- 数Oracle调整会话最大数的技巧(oracle会话最大)
- 解析MSSQL中索引列的最大数量(mssql索引列最大数)
- 字Oracle数据库中使用关键字发挥最大价值(Oracle内关键)
- 巨大的梦想,建立最大的Redis集群(最大的redis集群)
- Redis如何设定长连接的最大数量(redis长连接最大数量)