2개의 댓글이 있습니다.
-
-
SteelFox -
memset(void *dst, int Val, size_t size) 함수는 dst변수의 주소로부터 *dst + Size 만큼의 공간에 Val값을 'byte 단위'로 초기화합니다. 변수에 0 또는 -1로 초기화를 하면 모든 byte에 0 또는 1(-1은 2의 보수로 모든 bit가 1이 됨)로 채울 수 있기 때문에 초기화하는 데에 사용할 수 있지만, 그 외 다른 값을 사용하면 Val값으로 초기화가 되지 않지요. double은 floating point로 값을 읽기 때문에 당연히 byte단위로 초기화를 하면 값이 정상적으로 초기화되지 않지요. byte단위로 할당된 값을 확인해보면 모든 bit이 1로 정상적으로 할당은 됨을 확인할 수 있습니다. memset은 int 아니면 char에만 쓴다고 생각하시면 됩니당
아니면 fill(cache[0], cache[1001], -1)도 써보세요. fill()은 특정 값으로 초기화하는 함수입니다~~
5년 전 link
-
-
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
시나브로
안녕하십니까! snail문제를 풀다가
cashe배열의 초기화에서
memset(cashe,-1,sizeof(cashe));로 초기화하고
{if(cashe[n][m] != -1){return cashe[n][m];}}로 메모이제이션하면 안되는 이유가 궁금합니다!
아마도 추측상으로는 자료형의 문제로 생각됩니다...
IDE에서 출력결과가-NaN으로 나옵니다.. 왜인지 궁금합니다!
(문제는 반복문 초기화로 풀었습니다!)
5년 전