题目链接:最大子阵
题目思路:这个题的AC代码,我是服气的!!!直接枚举上下左右边,可以的!
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, m, sum, ans = -1010; //ans取-1010是因为题目中,最小可取-1000;
cin >> n >> m;
int a[55][55];
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++){
cin >> a[i][j];
}
}
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++){ //右边
sum = 0; //记录所选区域的和
for(int i = up; i <= down; i++){ //遍历所选区域
for(int j = left; j <= right; j++){
sum += a[i][j];
}
}
if(ans < sum)ans = sum; //存最大值
}
}
}
}
cout << ans << endl;
return 0;
}