Red de conocimiento informático - Computadora portátil - C. Algoritmo, programación dinámica: Hay una caja con una capacidad de v (entero positivo, 0<=v<=20000) y n elementos (0

C. Algoritmo, programación dinámica: Hay una caja con una capacidad de v (entero positivo, 0<=v<=20000) y n elementos (0
#include

#define N 30

int xiangzi(int n,int V,int a[]) // la matriz Vo detrás del propietario debe ser poner dentro de la función recursiva o definir como una matriz global. Además, ¿cuál es el caso de h[n]

{

int minv,t,m=V;

if( n==0)

{

if(a[n]<=V) // V es el espacio restante. minv es el espacio mínimo producido, es la variable que se va a interrogar, no la variable conocida, no se puede saber con V

minv=V-a[n];

else

minv=V;

}

else

{

t=xiangzi(n-1,V,a);

if(a[n]<=V) //posiblemente a[n ] es mayor que V. Si el propietario del programa no juzga, entonces m debe ser menor que 0 en este momento y minv eventualmente será 0. Esta situación debe descartarse primero. Por lo tanto, el m previamente definido se puede inicializar a m=V;

m=xiangzi(n-1,V-a[n],a /*Considere la situación de seleccionar este objeto*/

if(t

minv=t;

else

minv=m;

}< / p>

return minv=m.

return minv;

}

void main()

{

int V;

int n,i,m,min;

int Vo[N];

printf( " La capacidad de la caja, V, es:");

scanf("%d",&V);

printf("El número de tipos de artículos es:" ) ;

scanf("%d",&n);

printf("El volumen de elementos es respectivamente:\n");

for( i =0;i

scanf("%d",&Vo[i]); //Cambie "%d" a "%d" y elimine el espacio después de d. Lo siento, estoy estudiando C ++ y la sintaxis de C no es muy buena. Lo acabo de depurar y no sé el motivo.

min=xiangzi(n-1,V,Vo);

printf("%d\n",min); //No olvides generar también

p>

system("pausa");

}

Eso es todo.