반응형
https://www.acmicpc.net/problem/1749
arr[i][j] = 왼쪽 위 좌표가 (1, 1), 오른쪽 아래 좌표가 (i, j)인 직사각형의 넓이를 저장해줍니다.
만들어질 수 있는 모든 직사각형을 검사하면서, 그 넓이의 최댓값을 찾아줍니다.
#include <cstdio>
int n, m, arr[201][201] = { 0 }, ans = -10000;
int main() {
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
scanf("%d", &arr[i][j]);
arr[i][j] += arr[i - 1][j] + arr[i][j - 1] - arr[i - 1][j - 1];
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
for (int k = i; k <= n; k++) {
for (int l = j; l <= m; l++) {
int sum = arr[k][l] - arr[i-1][l] - arr[k][j-1] + arr[i - 1][j - 1];
if (ans < sum) ans = sum;
}
}
}
}
printf("%d", ans);
}
반응형
'Algorithm' 카테고리의 다른 글
백준 14497 : 주난의 난(難) (0) | 2021.11.17 |
---|---|
백준 20208 : 진우의 민트초코우유 (0) | 2021.11.17 |
백준 2170 : 선 긋기 (0) | 2021.11.17 |
백준 6198 : 옥상 정원 꾸미기 (0) | 2021.11.17 |
백준 17940 : 지하철 (0) | 2021.11.17 |