스택 크기의 제한 때문에 그렇습니다.
지역 변수는 스택 영역에 할당이 되는데, 이 영역의 크기는 디폴트로 윈도우에서는 1MB로, 리눅스에서는 8MB로 제한되어 있습니다. 빌드할 때 설정을 바꿀 수 있지만, 일반적으로 컴파일 후 실행하면 런타임 에러가 발생할 수 있습니다.
int dp[1005][1005]; 의 크기가 약 4MB이기 때문에, 어떤 시스템에서는 터지고, 어떤 시스템에서는 잘 돌아가게 됩니다.
9252번 - LCS 2
for(int i=0;i<alen;i++)
{
for(int j=0;j<blen;j++)
{
if(a[i]==b[j]) dp[i][j]=dp[i-1][j-1]+1;
else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
여기에서 i나 j = 0이면 i-1 이나 j -1은 값이 어떻게 될까요...?
댓글을 작성하려면 로그인해야 합니다.
kyaryunha 5년 전
음ㅁ.. 일단 백준에선 바로 틀렸습니다..!!가 뜨고요..!
온라인 컴파일러에선 이런저런 예제, 문제에서 제시한 예제, (A,B) (abcdef, abcdeef) 등등 돌려봤을때, 틀리지 않았고요.
c언어에서는 키자마자 바로, asdf(cpp 파일명).exe의 작동이 중지되었습니다. 라고 뜹니다.
main에서 0이 아닌 값을 리턴하는 것을 보아, 그리고 main 열자마자 printf 해봐도 출력 안하는 것을 보아, main함수 들어가기도 전에 문제를 일으키는 것 같습니다
왜 이럴까요..ㅇㅁㅇ (컴파일러쪽은 아예 모르는지라 ㅠㅜ 어디서 문제를 일으키는건지 알 수가 없네요)
코드는 아래와 같습니다.
온라인 컴파일러는
http://www.compileonline.com/c...
를 사용했습니다. (c++11)
코드블럭에서의 컴파일러는 요거 사용했고요.