ckrmsckrms19   6년 전

이렇게 사용자에게서 값을 받아서 배열 크기를 지정하게 되면 90% 정도에서 멈추고 틀렸다고 나오고,

캡처4.PNG


똑같은 코드이지만, 처음부터 크기가 지정된 배열인 경우에는 맞췄다고 나오게 되는데, 

캡처3.PNG


이유를 모르겠습니다.

다이나믹을 풀어나갈 때, (N, M) 이상으로 벗어날 일이 없는데도 왜 이렇게 최대 크기로 배열 크기를 지정해야 하는지도 모르겠군요. 

djm03178   6년 전

사실 둘 다 문제가 있습니다. d의 0번째 행이나 0번째 열에는 무슨 값이 들어있을지 모르기 때문입니다.

ckrmsckrms19   6년 전

c++ 에서는 배열 값을 초기화 하지 않는다면 0으로 채운다고 알고 있습니다.

http://www.cplusplus.com/doc/t...

여기에 보시면 

"If no explicit initializer is specified, all the elements are default-initialized (with zeroes, for fundamental types)."

라고 나옵니다.

그래서 1,1 부터 계산이 가능한 이유가 어차피 테두리에 있는 값들은 0으로 되어있고 또 사탕의 값이 0보다 크거나 같기 때문입니다. 실제로 백준 선생님이 강의에서도 그런 식으로 말씀하셨고요. 

잘은 모르겠지만, 제가 봤을 때 이게 variable sized array 문제라서 그런 것 같은데, 확실하지는 않네요;;

kimsy96   6년 전

전역적으로 사용하면 그렇겠지만 

main함수안에 선언하면 쓰레기값이들어갈텐데요..?

그냥 비주얼스튜디에 배열하나선언해보고 출력해보면 확인가능할듯합니다

kimsy96   6년 전

링크거신 레퍼런스에

By default, regular arrays of local scope (for example, those declared within a function) are left uninitialized. This means that none of its elements are set to any particular value; their contents are undetermined at the point the array is declared.
요렇게 오네요

kimsy96   6년 전

첨부코드의 배열은 arrays of local scope입니다

ckrmsckrms19   6년 전

그럼 우연의 일치로 두번째 코드가 된거네요..;;

kimsy96   6년 전

쓰레기값이 들어있긴한데 scanf로 덮어쓰니까 퍼센티지는 올라간거같은데 

약간의 운이 작용했겠네요 저코드는 문제가있는게 맞습니다

startlink   6년 전

쓰레기값이 음수가 나왔나봅니다. 

댓글을 작성하려면 로그인해야 합니다.