私が書いたコードは、動的計画法を使用して基本的なコインの変更の問題を解決し、変更を行うために必要なコインの最小数を示します。しかし、各コインプレイのカウントを最小数に保存したいと思います。
私がやろうとしているのは、配列count[]
を初期化することであり、ハッシュのように、が見つかるcoin[j]
たびに の数を増やします。しかし、これは、に対応するものを見つけるたびにコインを追加するため、私が望むようには機能していません。したがって、この数字は、最終回答のコインの最終カウントではありません。min
count[coin[j]]++
min
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]);
}