我编写程序来改变硬币。当我在循环中编写 printf 以打印 i 或 j 程序时会产生良好的结果,当我删除它时,程序会停止。我认为这是内存问题,但我在 QT 中的 Windows 上编写,我无法访问 valgrind。
任何人都可以检查这个?首先给出面额的数字,第二个是面额,最后是数量。
例如:
3
1 3 5
8
结果应该是2。
1
5
3
结果应该是NO。
#include <stdio.h>
#include <stdlib.h>
#define INF 2147483647 //nieskonczonosc
void nominal(int nominaly, int T[], int k)
{
int i;
for (i=1; i<=nominaly; i++ )
{
int n=0;
scanf("%d", &n);
int j;
for ( j=0;j<=k-n;++j) {
if (T[j] < INF)
if (T[j]+1 < T[j+n])
T[j+n] = T[j]+1;
}
}
int kwota=0;
scanf("%d", &kwota);
if(T[kwota]==INF){
printf("NO");
}else
printf("%d", T[kwota]);
}
int main() {
int n=0;
scanf("%d", &n);
int k=10000;
int *T;
T = (int*)malloc(k * sizeof(int));
T[0]=0;
int i;
for (i=1;i<=k;++i)
{
T[i]=INF;
}
nominal(n, T, k);
free(T);
return 0;
}