Buongiorno, stavo provando a fare il problema Coin Change nell’archivio dei problemi, ma quando lo sottopongo mi da sempre 0/100. Leggendolo mi sembra un problema abbastanza semplice e di conseguenza non riesco veramente a capire cosa sbaglio visto che i due casi che vengono dati mi vengono.
Ho pensato che stessi sbagliando a sottoporlo e magari il sito non riuscisse a leggerlo bene, ma non saprei come risolvere.
Qualcuno potrebbe essere così gentile da guardare il codice e nel caso dirmi se effettivamente sono presenti degli errori?
Grazie
#include <assert.h>
#include <stdio.h>
// input data
long long V[15];
int main() {
// uncomment the following lines if you want to read/write from files
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
for (i = 0; i < 15; i++)
assert(1 == scanf("%lld", &V[i]));
long long sol[15] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
float coinValue[15] = {0.01, 0.02, 0.05, 0.10, 0.20, 0.50, 1, 2, 5, 10, 20, 50, 100, 200, 500};
float sum = 0.0;
int count;
for(i = 0; i < 15; i++)
sum += V[i] * coinValue[i];
for (i = 0; i < 15; i++) {
count = 0;
if (coinValue[14 - i] > sum)
count = 0;
else {
while (sum >= coinValue[14 - i]) {
sum = sum - coinValue[14 - i];
count++;
}
}
sol[14 - i] = count;
}
for (i = 0; i < 15; i++)
printf("%lld ", sol[i]);
printf("\n");
return 0;
}