PACKING 문제 질문입니다! universalee 절박도를 최대로 만드는 물건의 개수와 목록을 찾아주는 find라는 함수를 작성했습니다. void find(vector<string>& nameArr, vector<string>& answer, int n, int w) { if (n>N) return; if (solution(n, w) == solution(n + 1, w)) find(nameArr, answer, n + 1, w); else { answer.push_back(nameArr[n - 1]); find(nameArr, answer, n + 1, w - weights[n]); } } 이 함수는 정답처리가 됩니다. void find(vector<string>& nameArr, vector<string>& answer) { int i = 1, j = W; while (i<N) { if (cache[i][j] == cache[i + 1][j]) ++i; else { answer.push_back(nameArr[i - 1]); j -= weights[i]; ++i; } } } 제가 초기에 작성했던 함수는 이 코드인데요. 제가 생각하기에는 위 두 코드가 동작하는 방식이 동일하다고 생각되는데 이 코드는 오답처리가 됩니다. 혹시 왜 오답처리가 되는지 아시는 분 있으면 답변 주시면 감사하겠습니다. ㅠㅠ 5년 전
1개의 댓글이 있습니다. SteelFox 재귀에서는 n의 범위가 [1, N + 1)인데 반복문에서는 [1, N)이라서 그럴 듯요 5년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
universalee
절박도를 최대로 만드는 물건의 개수와 목록을 찾아주는 find라는 함수를 작성했습니다.
이 함수는 정답처리가 됩니다.
제가 초기에 작성했던 함수는 이 코드인데요. 제가 생각하기에는 위 두 코드가 동작하는 방식이 동일하다고 생각되는데 이 코드는 오답처리가 됩니다. 혹시 왜 오답처리가 되는지 아시는 분 있으면 답변 주시면 감사하겠습니다. ㅠㅠ
5년 전