
풀이
- 5가지 모형이 가질 수 있는 19가지 경우 전부 작성
_%ED%92%80%EC%9D%B4.jpg)
코드
#include <iostream>
using namespace std;
int arr[501][501];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> arr[i][j];
}
}
int ans = 0;
int sum = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m - 3; j++) {
sum = arr[i][j] + arr[i][j + 1] + arr[i][j + 2] + arr[i][j + 3];
if (sum > ans)
ans = sum;
sum = 0;
}
}
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n - 3; j++) {
sum = arr[j][i] + arr[j + 1][i] + arr[j + 2][i] + arr[j + 3][i];
if (sum > ans)
ans = sum;
sum = 0;
}
}
for (int i = 1; i <= n - 1; i++) {
for (int j = 1; j <= m - 1; j++) {
sum = arr[i][j] + arr[i + 1][j] + arr[i][j + 1] + arr[i + 1][j + 1];
if (sum > ans)
ans = sum;
sum = 0;
}
}
for (int i = 1; i <= n - 2; i++) {
for (int j = 1; j <= m - 1; j++) {
sum = arr[i][j] + arr[i + 1][j] + arr[i + 2][j] + arr[i + 2][j + 1];
if (sum > ans)
ans = sum;
sum = 0;
}
}
for (int i = 1; i <= n - 1; i++) {
for (int j = 1; j <= m - 2; j++) {
sum = arr[i + 1][j] + arr[i + 1][j + 1] + arr[i + 1][j + 2] + arr[i][j + 2];
if (sum > ans)
ans = sum;
sum = 0;
}
}
for (int i = 1; i <= n - 2; i++) {
for (int j = 1; j <= m - 1; j++) {
sum = arr[i][j] + arr[i][j + 1] + arr[i + 1][j + 1] + arr[i + 2][j + 1];
if (sum > ans)
ans = sum;
sum = 0;
}
}
for (int i = 1; i <= n - 1; i++) {
for (int j = 1; j <= m - 2; j++) {
sum = arr[i][j] + arr[i + 1][j] + arr[i][j + 1] + arr[i][j + 2];
if (sum > ans)
ans = sum;
sum = 0;
}
}
for (int i = 1; i <= n - 2; i++) {
for (int j = 1; j <= m - 1; j++) {
sum = arr[i + 2][j] + arr[i][j + 1] + arr[i + 1][j + 1] + arr[i + 2][j + 1];
if (sum > ans)
ans = sum;
sum = 0;
}
}
for (int i = 1; i <= n - 1; i++) {
for (int j = 1; j <= m - 2; j++) {
sum = arr[i][j] + arr[i + 1][j] + arr[i + 1][j + 1] + arr[i + 1][j + 2];
if (sum > ans)
ans = sum;
sum = 0;
}
}
for (int i = 1; i <= n - 2; i++) {
for (int j = 1; j <= m - 1; j++) {
sum = arr[i][j] + arr[i][j + 1] + arr[i + 1][j] + arr[i + 2][j];
if (sum > ans)
ans = sum;
sum = 0;
}
}
for (int i = 1; i <= n - 1; i++) {
for (int j = 1; j <= m - 2; j++) {
sum = arr[i][j] + arr[i][j + 1] + arr[i][j + 2] + arr[i + 1][j + 2];
if (sum > ans)
ans = sum;
sum = 0;
}
}
for (int i = 1; i <= n - 2; i++) {
for (int j = 1; j <= m - 1; j++) {
sum = arr[i][j] + arr[i + 1][j] + arr[i + 1][j + 1] + arr[i + 2][j + 1];
if (sum > ans)
ans = sum;
sum = 0;
}
}
for (int i = 1; i <= n - 1; i++) {
for (int j = 1; j <= m - 2; j++) {
sum = arr[i + 1][j] + arr[i + 1][j + 1] + arr[i][j + 1] + arr[i][j + 2];
if (sum > ans)
ans = sum;
sum = 0;
}
}
for (int i = 1; i <= n - 2; i++) {
for (int j = 1; j <= m - 1; j++) {
sum = arr[i + 1][j] + arr[i + 2][j] + arr[i + 1][j + 1] + arr[i][j + 1];
if (sum > ans)
ans = sum;
sum = 0;
}
}
for (int i = 1; i <= n - 1; i++) {
for (int j = 1; j <= m - 2; j++) {
sum = arr[i][j] + arr[i][j + 1] + arr[i + 1][j + 1] + arr[i + 1][j + 2];
if (sum > ans)
ans = sum;
sum = 0;
}
}
for (int i = 1; i <= n - 1; i++) {
for (int j = 1; j <= m - 2; j++) {
sum = arr[i + 1][j] + arr[i + 1][j + 1] + arr[i][j + 1] + arr[i + 1][j + 2];
if (sum > ans)
ans = sum;
sum = 0;
}
}
for (int i = 1; i <= n - 2; i++) {
for (int j = 1; j <= m - 1; j++) {
sum = arr[i][j] + arr[i + 1][j] + arr[i + 2][j] + arr[i + 1][j + 1];
if (sum > ans)
ans = sum;
sum = 0;
}
}
for (int i = 1; i <= n - 1; i++) {
for (int j = 1; j <= m - 2; j++) {
sum = arr[i][j] + arr[i][j + 1] + arr[i][j + 2] + arr[i + 1][j + 1];
if (sum > ans)
ans = sum;
sum = 0;
}
}
for (int i = 1; i <= n - 2; i++) {
for (int j = 1; j <= m - 1; j++) {
sum = arr[i + 1][j] + arr[i][j + 1] + arr[i + 1][j + 1] + arr[i + 2][j + 1];
if (sum > ans)
ans = sum;
sum = 0;
}
}
cout << ans;
}