我编写的代码使用动态编程解决了基本的硬币找零问题,并给出了找零所需的最小硬币数量。但是我想将每个硬币的数量存储在最小数量中。
我正在尝试做的是初始化一个数组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]);
}