[SUSHI] 문제 동적계획법으로 풀었는데 답이 다르게 나옵니다. icbm 제 알고리즘이 잘못 되었나요? 제가 사용한 알고리즘이 맞는것 같은데 (배낭문제 알고리즘과 같은 알고리즘으로 풀었습니다.) 테스트 케이스의 첫번째 답이 28이 나오지 않고 26이 나오네요 잘못된 부분있으면 알려주세요~ 일단 배열의 크기는 첫번째 테스트케이스에는 상관없도록 하였습니다. #include<stdio.h> #pragma warning(disable:4996) int C, N, M, arr[201][21]; int prefer[21]; int price[21]; int main(){ int i, j; scanf("%d %d", &N, &M); for (i = 1; i <= N; i++){ scanf("%d %d", &price[i], &prefer[i]); } for (i = 1; i <= M/100; i++){//잔액 for (j = 1; j <= N; j++){//먹는 음식의 수 if (i >= price[j] / 100){ if (arr[i - price[j] / 100][j - 1] + prefer[j] >= arr[i][j - 1]) arr[i][j] = arr[i - price[j] / 100][j - 1] + prefer[j]; else arr[i][j] = arr[i][j - 1]; } else arr[i][j] = arr[i][j - 1]; } } printf("%d\n", arr[M / 100][N]); return 0; } 9년 전
2개의 댓글이 있습니다. restart 위와같은 설계의 경우 같은 음식을 여러번 선택하지 않습니다. 그래서 예제1번의 경우 2500, 3000, 4000을 택해 26이 나옵니다. 하지만 답은 3000 두개, 4000을 선택하여 만족도 28을 얻는 경우입니다. 9년 전 link icbm 감사합니다! 같은 음식을 고르는경우는 생각도 하지않고 있었네요... 9년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
icbm
제 알고리즘이 잘못 되었나요? 제가 사용한 알고리즘이 맞는것 같은데
(배낭문제 알고리즘과 같은 알고리즘으로 풀었습니다.)
테스트 케이스의 첫번째 답이 28이 나오지 않고 26이 나오네요
잘못된 부분있으면 알려주세요~
일단 배열의 크기는 첫번째 테스트케이스에는 상관없도록 하였습니다.
9년 전