Código fuente en C del algoritmo O(VN) completo del problema de la mochila
usando el espacio de nombres std;
int max(int a, int b)
{
a =agt ;b?a:b;
return a;
}
int Mochila(int n, int c, int w[], int v [] , int x[])
{
int i, j
int a[n 1][c 1];
for(i=0;ilt;=n;i)a[i][0]=0; // Inicializa la columna 0
for(j=0;jlt;=c;j )a [0][j]=0;//Inicializa la fila 0
for(i=1;ilt;=n;i)//Calcula la fila i para la i-ésima iteración
for(j=1;jlt;=c;j)
if(jlt;w[i]) a[i][j]=a[i-1][j];
p>else a[i][j]=max(a[i-1][j], a[i-1][j-w[i]] v[i]); p>
j=c;//encuentra los artículos que se cargarán en la mochila
for(i=n;igt;0;i--)<
{
if(a[i][j]gt; a[i-1][j])
{
x[i]=1 ;
j=j-w[i];
}
más x[i]=0;
return a[n][c]; //devuelve el valor máximo
}
int main()
{
int n =5, c=10, x[n];
int w[6]={0, 2, 2, 6, 5, 4} //w[] y v; [] matrices respectivamente Guarde los pesos de los elementos y sus valores correspondientes. Debido a problemas de función, w[0] y v[0] deben cargarse como 0, o la función se puede modificar para que no tenga que ser 0.
int v[6]={0, 6, 3, 5, 4, 6};
n=Mochila(n, c, w, v, x); /p>
coutlt;lt;nlt;lt;endl;
sistema("pausa");
devuelve 0;
} p>
p>