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]);
}
}
이 함수는 정답처리가 됩니다.
~~~ c++
void find(vector& nameArr, vector& 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;
}
}
}
~~~
제가 초기에 작성했던 함수는 이 코드인데요. 제가 생각하기에는 위 두 코드가 동작하는 방식이 동일하다고 생각되는데 이 코드는 오답처리가 됩니다. 혹시 왜 오답처리가 되는지 아시는 분 있으면 답변 주시면 감사하겠습니다. ㅠㅠ
universalee
절박도를 최대로 만드는 물건의 개수와 목록을 찾아주는 find라는 함수를 작성했습니다.
이 함수는 정답처리가 됩니다.& nameArr, vector& answer)
~~~ c++
void find(vector
{
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;
}
}
}
~~~
제가 초기에 작성했던 함수는 이 코드인데요. 제가 생각하기에는 위 두 코드가 동작하는 방식이 동일하다고 생각되는데 이 코드는 오답처리가 됩니다. 혹시 왜 오답처리가 되는지 아시는 분 있으면 답변 주시면 감사하겠습니다. ㅠㅠ
7년 전