제 알고리즘이 잘못 되었나요? 제가 사용한 알고리즘이 맞는것 같은데
(배낭문제 알고리즘과 같은 알고리즘으로 풀었습니다.)
테스트 케이스의 첫번째 답이 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;
}
icbm
제 알고리즘이 잘못 되었나요? 제가 사용한 알고리즘이 맞는것 같은데
(배낭문제 알고리즘과 같은 알고리즘으로 풀었습니다.)
테스트 케이스의 첫번째 답이 28이 나오지 않고 26이 나오네요
잘못된 부분있으면 알려주세요~
일단 배열의 크기는 첫번째 테스트케이스에는 상관없도록 하였습니다.
11년 전