• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

배낭문제가 백준문제로 있어서 작성했는데 왜 안되는지 알 수 있을까요?

23.07.22 00:32 작성 조회수 252

0

https://www.acmicpc.net/problem/12865

 

#include <iostream>

#include <algorithm>

using namespace std;

int N, K;

int W[101];

int V[101];

int DP[101][100001];

int main()

{

scanf("%d%d", &N, &K);

for (int i = 1; i <= N; i++){

scanf("%d %d", &W[i], &V[i]);

}

for (int i = 1; i <= N; i++)

{

for (int j = 1; j <= K; j++)

{

if (j < W[i])

{

DP[i][j] = DP[i-1][j];

}

else

DP[i][j] = max(DP[i-1][j],DP[i-1][j-W[i]]-V[i]);

}

}

printf("%d", DP[N][K]);

}

 

안녕하세요? 정올 문제로 배낭문제 수강하고 똑같이 있는 백준문제를 발견하고 작성한 코드인데 채점을 하면 틀렸다고 뜹니다. 혹시 이유를 알 수 있을까요?

답변 1

답변을 작성해보세요.

1

안녕하세요 Estados Unidos님.

질문해주신 백준의 문제는 영상에서 다룬 문제와 다릅니다.

영상의 경우에는 1개의 물건을 최대 1개 담을 수 있지만, 올려주신 백준 문제에선 해당 제약이 없습니다.

따라서, 올려주신 백준 문제는 아래 정올 문제와 동일합니다.
https://jungol.co.kr/problem/1077?cursor=eyJwcm9ibGVtc2V0IjoiOCIsImZpZWxkIjo2LCJpZHgiOjd9

Estados Unidos님이 만족하시는 답변이 되었기를 바라며, 답변 해결로 상태 변경을 부탁드립니다.

이후에도 문제를 풀거나 공부하시면서 어려운 점이 있다면 질문 올려주세요.

감사합니다.