Red de conocimiento del abogados - Preguntas y respuestas jurídicas - Código fuente del algoritmo C para el problema completo de la mochila O(VN)

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; > }

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);

coutlt;lt;nlt; lt; endl;

sistema("pausa");

retorno

}