메모이제이션으로 풀었습니다.
인접한 맵으로만 갈수 있기때문에 DFS 알고리즘으로 접근하면 됩니다.
1937번 - 욕심쟁이 판다
메모이제이션으로 풀었습니다.
인접한 맵으로만 갈수 있기때문에 DFS 알고리즘으로 접근하면 됩니다.
그냥 dp배열을 -1이나 0으로 초기화시켜두고 값이 0보다 클때만 캐싱하게끔 짜면 될거같습니다.
LIS이기도 하니까 어차피 한번 방문했던 지역은 굳이 방문체크를 안해줘도 대나무가 더 적으니 팬더는 안갈겁니다 ㅋㅋ
아마 그럴거같은데요? ㅋㅋㅋ
이 질문에 대한 답변은 고수분께 패스 ㅎㅎ
#include <iostream>
using namespace std;
int main()
{
int a[16500000];
cin >> a[0] >> a[1];
cout << a[0] + a[1];
}
1000번 문제에 위 코드로 제출하면 통과가 됩니다. 스택 공간이 64M으로 잡혀있는 것으로 생각됩니다.
VS2015 에서 스택 크기를 64M으로 잡고 재귀 함수내에 int 변수 4개 잡고 돌릴경우 26만번정도까지 호출이 되네요.
http://copynull.tistory.com/40
이 문제에서는 스택오버플로우는 절대로 일어나지 않을 것으로 보입니다.
dfs 를 재귀로 작성할경우 묵시적으로 스택을 이용하게 됩니다. 이를 명시적으로 스택을 사용하여 비재귀(non recursive)로 작성이 가능합니다.
저는 STL의 stack을 이용하여 비재귀 DFS를 작성하였습니다.
댓글을 작성하려면 로그인해야 합니다.
algospot 7년 전
다이나믹 써야하는 건 알겠는데
내방향중 위로도 갈수있어서, 조금 처치가 곤란한 상황에 있습니다.
점화식 어떻게 세우셨어요??