Problema completo de la mochila~
El viajero tiene una mochila que puede llevar hasta m kilogramos. Ahora hay n tipos de artículos, y el peso de cada artículo es W1, W2,..., Wn,
<. p>El peso de cada artículo es Los valores son C1, C2,...,Cn respectivamente si el número de cada artículo es suficiente.Encuentra el valor total máximo que los viajeros pueden obtener.
El modelo matemático de este problema es el siguiente:
Supongamos que f(x) representa el valor máximo cuyo peso no excede x kilogramos,
entonces f (x)=max Cuando x>=w[i] 1<=i<=n
El método recursivo se puede utilizar para resolver el problema. El programa es el siguiente:
const maxm =200;maxn=30;
escriba ar=array[0..maxn] de entero;
var m, n,j,i,t:integer;
c,w:ar;
función f(x:integer):integer;
var i, t,m:integer;
comenzar
si x=0 entonces f:=0 si no
comenzar
t:=- 1;
para i:= 1 an hacer
comenzar
si x>=w[i] entonces m:=f(x-i)+c [i];
si m >t entonces t:=m;
fin;
f:=t;
fin ;
fin;
comenzar
readln(m,n);
para i:= 1 a n hacer
readln(w[i],c[ i]);
writeln(f(m));
fin.
Explicación: Cuando m no es grande, la programación es muy simple, pero cuando m es grande, es fácil agotar el tiempo de espera.
4.2 Método recursivo mejorado
La idea de El método recursivo mejorado es intercambiar espacio por tiempo. Esto solo necesita cambiar cada subpaso en el proceso de cálculo de la función recursiva. Para guardar el valor de la función, simplemente cree una matriz unidimensional.
El programa es el siguiente:
programa knapsack04;
const maxm= 2000;maxn=30;
escriba ar=array [0..maxn] de entero;
var m,n,j,i,t:integer;
c,w:ar;
p :matriz[0..maxm] de entero;
función f(x:integer):integer;
var i,t,m:integer;
comenzar
si p[x]<>-1 entonces f:=p[x]
si no
comenzar
si x=0 entonces p[x]:=0 else
comenzar
t:=-1
for i:=1 to n do p>
comenzar
si x>=w[i] entonces m:=f(i-w[i])+ c[i];
si m>t entonces t:=m;
fin;
p[x]:=t;
fin;
f:=p[ x];
fin;
fin;
comienzo
readln(m,n);
para i:= 1 an hacer
<p> readln(w[i],c[i]);
fillchar(p,sizeof(p),-1
writeln(f(m));
fin.
Además, existen compras grupales de productos en el grupo de webmasters, y los precios están garantizados