Programming/Algorithm

[Algorithm] C++ 영지(territory) 선택 : (small)

100winone 2019. 12. 27. 12:23

입력설명

첫 줄에 H(세로길이)와 W(가로길이)가 입력된다. (5<=H, W<=50) 그 다음 H줄에 걸쳐 각 사 각형 지역에 오렌지의 나무 개수(1~9개) 정보가 주어진다.  그 다음 영지의 크기인 세로길이(1~H)와 가로길이(1~W)가 차례로 입력된

 

출력설명

첫 줄에 현수가 얻을 수 있는 오렌지 나무의 최대 개수를 출력한다

 

입력예제

6 7 

3 5 1 3 1 3 2 

1 2 1 3 1 1 2 

1 3 1 5 1 3 4 

5 1 1 3 1 3 2 

3 1 1 3 1 1 2 

1 3 1 3 1 2 2 

2 3

 

출력예제

16

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;

int a[10][60];
int main() {
	int n, m, w, h, i, j, k, s, sum = 0, max = -21470000;
	scanf("%d %d", &h, &w);
	for (i = 1; i <= h; i++) {
		for (j = 1; j <= w; j++) {
			scanf("%d", &a[i][j]);
		}
	}
	scanf("%d %d", &n, &m);

	for (i = 1; i <= h - n + 1; i++) {
		for (j = 1; j <= w - m + 1; j++) {
			sum = 0;
			for (k = i; k < i + n; k++) {
				for (s = j; s < j + m; s++) {
					sum += a[k][s];
				}
			}
			if (sum > max) max = sum;
		}
	}
	printf("%d\n", max);
	return 0;
}