Código fuente del algoritmo C para el problema completo de la mochila O(VN)
#includelt;iostreamgt;
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; //Inicializar columna 0
for(j=0 ; jlt;=c;j)a[0][j]=0; //Inicializar fila 0
for(i=1;ilt;=n;i)//Calcular fila i, Llevar saca la i-ésima iteración
for(j=1;jlt;=c;j)
if(jlt;w[i]) a[i][j]= a [i-1][j];
else a[i][j]=max(a[i-1][j], a[i-1][j-w[i]] v [i]);
j=c;//Encuentra los artículos que se pondrá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; > } p>
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}; Las matrices /w[] y v[] contienen el peso del elemento y el valor correspondiente respectivamente. Debido a problemas de función, w[0] y v[0] deben completarse con 0 o no es necesario cambiar la función. /p>
int v[6] ={0, 6, 3, 5, 4, 6};
n=Mochila(n, c, w, v, x); p>
coutlt;lt;nlt; lt; endl;
sistema("pausa");
retorno
}