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*/ p >
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.
#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*/ p > 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 system("pausa"); } Eso es todo.