필자가 작성한 코드는 동적 프로그래밍을 사용하여 기본 동전 변경 문제를 해결하고 변경하는 데 필요한 최소 동전 수를 제공합니다. 그러나 각 코인 플레이 부분의 수를 최소 숫자로 저장하고 싶습니다. 내가 뭘하려고 오전동전 변경 : 동적 프로그래밍
배열 count[]
를 초기화하고, 단지 해시처럼은 min
이 발견 될 때마다 coin[j]
의 수, 즉 count[coin[j]]++
을 증가시킨다. 그러나 이 coin[j]
에 해당 할 때마다 동전을 추가하기 때문에 원하는 방식대로 작동하지 않습니다. 따라서이 숫자는 최종 답안에서 동전의 최종 집계가 아닙니다. 여기
void makeChange(int coin[], int n, int value)
{
int i, j;
int min_coin[MAX];
int min;
int count[MAX];
min_coin[0] = 0;
for (i=1; i <= value; i++)
{
min = 999;
for (j = 0; j<n; j++)
{
if (coin[j] <= i)
{
if (min > min_coin[i-coin[j]]+1)
{
min = min_coin[i-coin[j]]+1;
count[coin[j]]++;
}
}
}
min_coin[i] = min;
}
printf("minimum coins required %d \n", min_coin[value]);
}