답안 #9421

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
9421 2014-09-28T06:18:13 Z silas On grid (kriii2_O) C++
컴파일 오류
0 ms 0 KB
#include <iostream>
#include <vector>
#define INF -987654321
using namespace std;

int R, C;
int arr[301][301];
int cache[301][301];

int psum_element(int y, int x, int val) {
	int ret = val;
	if (x - 1 >= 1) {
		ret += arr[y][x-1];
	}
	if (y - 1 >= 1) {
		ret += arr[y-1][x];
	}
	if (x - 1 >= 1 && y - 1>= 1)
		ret -= arr[y-1][x-1];
	return ret;
}

int	area_sum(int ori_y, int ori_x, int sub_y, int sub_x) {
	int ret = 0;
	ret += arr[ori_y][ori_x];
	ret -= arr[ori_y][sub_x];
	ret -= arr[sub_y][ori_x];
	ret += arr[sub_y][sub_x];
	return ret;
}

int dp (int y, int x) {
	if (y == 0 || x == 0)
		return INF;
	if (y == 1)
		return arr[1][x];
	if (x == 1)
		return arr[y][1];
	int &ret = cache[y][x];
	if (ret != -1)
		return ret;
	ret = 0;
	for (int i = y; i >= 1; i--) {
		for (int j = x; j >= 1; j--) {
			ret = max(ret, dp(i - 1, j - 1) + area_sum(y, x, i - 1, j - 1));
		}
	}
	ret = max(ret, arr[y][x]);
	return ret;
}

int main() {
	cin >> R >> C;
	memset(cache, -1, sizeof(cache));
	int temp;
	for (int i = 1 ; i <= R; i++) {
		for (int j = 1 ; j <= C; j++) {
			cin >> temp;
			arr[i][j] = psum_element(i, j, temp);
		}
	} // psum 2차원 배열을 완성
	cout << dp(R, C) << endl;


	return 0;
}

Compilation message

O.cpp: In function 'int main()':
O.cpp:54:33: error: 'memset' was not declared in this scope