티스토리 뷰
(301,301) 까지 가면서 다 보면 된다
처음에 d[300][300][600] 해서 시간까지 테이블로 잡으려다가
메모리 보고 포기했다 ㅎㅎ
시간을 잡지않아도 (0,0)에서 위,오른쪽만 움직이기 때문에
시간 = x+y가 된다. 따라서 m-x+y가 현재위치에서의 사탕 수 이다
소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <iostream> #include <algorithm> #include <cstring> using namespace std; int d[303][303]; bool arr[303][303]; int n, m; int go(int x, int y) { if (x >= 301 || y >= 301) return 0; int&ret = d[x][y]; if (ret != -1) return ret; int cnt = (arr[x][y]==true) ? max(0,m - x - y) : 0; ret = max(go(x + 1, y), go(x, y + 1)) + cnt; return ret; } int main() { memset(d, -1, sizeof(d)); scanf(" %d %d", &n, &m); for (int i = 0; i < n; i++) { int x, y; scanf(" %d %d", &x, &y); arr[x][y] = true; } printf("%d\n", go(0, 0)); } | cs |
'알고리즘 > BOJ' 카테고리의 다른 글
[백준] 15803 PLAYERJINAH’S BOTTLEGROUNDS (0) | 2018.05.29 |
---|---|
[백준] 15783 세진 바이러스 (0) | 2018.05.28 |
[백준] 11581 구호물자 (0) | 2018.05.15 |
[백준] 4256 트리 (0) | 2018.05.15 |
[백준] 5639 이진 검색 트리 (0) | 2018.05.14 |
댓글