0
Hello!
The following code compiled, but shows error in execution:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
typedef struct
{
char *nome;
int valor;
int peso;
} objeto;
objeto obj[] = {
{"map", 10, 2},
{"compass", 7, 1},
{"water", 25, 6},
{"tin", 24, 5},
};
// max{ f(Xn-1, W-Pn) + Vn , f(Xn-1, W) }
int solver(objeto *obj, int n, int capac )
{
int i, j, taDentro, taFora;
int **matriz = (int **) calloc(n+1, sizeof(int *));
matriz[0] = (int *) calloc(capac+1, sizeof(int));
for (i=1; i<=n; i++)
{
matriz[i] = (int *) calloc(capac+1, sizeof(int));
for (j=1; j<=capac; j++)
{
taFora = matriz[i-1][j]; //coloca o item anterior?
if (obj[i-1].peso > matriz[i][j]) matriz[i][j] = taFora;
// -1 pq os itens em 'matriz' comecam em 1
else
{
taDentro = matriz[i-1][ j-obj[i].peso ] + obj[i].valor;
if (taDentro > taFora) matriz[i][j] = taDentro;
else matriz[i][j] = taFora;
}
}
}
int resultado;
resultado = matriz[i][j];
for (i = 0; i < n; i++) free(matriz[i]);
free(matriz);
return resultado;
}
int main()
{
int n = 3;
int capac = 7;
int resultado;
resultado = solver(obj, n, capac);
printf("%d\n", resultado);
}
The windows window shows this information:
Problem Event Name: APPCRASH
I don’t know if I’m trying to record or read information in wrong space, or if I’m using the pointers wrong. Or both.
Gentlemen, could you help me?
The payback is an integer?
– MagicHat