pastpot   3년 전

계속 틀리다가 처음부터 다른 방식으로 풀어서 결국에는 풀었는데요

틀렸던게 왜 틀렸는지 모르겠다가 49번째 줄

if(*real >= (fact(n)/(fact(n/2)*fact(n/2)))/2 ) return;

이것만 지우니까 틀렸다고 떴던게 맞았다고 하네요

그런데 제 생각에 저 문장이 왜 문제인지 모르겠어서요

조합알고리즘(?)에서 N개 중에서 N/2개를 뽑을 때 집합이 두개니까 한쪽 집합만 구하면 나머지는 자동으로 구해지니까

전체의 절반만 구하려고 저렇게 쓴건데 뭐가 문제죠 ㅠㅠ 디버깅(?)을계속 해봤는데도 모르겠어서요

프로그래밍 할때 쓰는 단어가 아직 많이 미숙하네요 알려주시면 감사하겠습니다

jerrome2685   3년 전

N의 최댓값이 20인데, fact(20)을 호출하시면 정수 범위를 넘어가서 이상한 마이너스값을 리턴하게 됩니다.

즉, 멈추면 안 되는데 멈추게 되는 상황이 발생할 수 있습니다.

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