Red de conocimiento informático - Consumibles informáticos - Haz una pregunta, el clásico problema de una familia cruzando un puente. Se busca un experto.

Haz una pregunta, el clásico problema de una familia cruzando un puente. Se busca un experto.

1 y 2 van a 1 y regresan a 3 (2+1) aquí es obviamente 3+1=4

Realmente no puedo calcular 28. ¿Puede el cartel darme Para mí, ¿una forma de moverme 28? El siguiente programa está diseñado según el principio del problema de cruzar el río, puede consultar:

/kk0602/blog/item/e9cadb1e1212fdf3e0fe0b03.html

El valor mínimo obtenido es 29.

#include

#ifdef USE_CHINESE

const char* guoqiao ="cruzar el puente" ;

const char* hui ="return ";

#else

const char* guoqiao ="pasar por el puente";

const char* hui ="volver";

#endif

int getShortestTime(int arr[], int n)

{

if(!arr || n < 1) devuelve 0 ;

if(n<4){

if(n == 3)

{

printf("(1, 2) %s;\n", guoqiao);

printf("1 %s; \n", hui);

printf("(1,3) %s ;\n", guoqiao);

return (arr[0]+arr[1]+arr[2]);

}

if( n == 2)

{

printf("(1,2) %s;\n", guoqiao);

return arr[1] ;

}

if(n == 1)

{

printf("1 %s;\n", guoqiao );

return arreglo[0];

}

}

else{

int a= arreglo[0], b=arr[1], c=arr[n-2],d=arr[n-1];

if(a+c>2*b)

{

printf("(1,2) %s;\n", guoqiao);

printf("2 %s; \n", hui);

printf("(%d,%d) %s; \n", n-1, n, guoqiao);

printf("1 %s; \n \n", hui);

return (a+d+2*b + getShortestTime(arr, n-2));

}

else

{

printf("(1,%d) %s;\n", guoqiao);

printf("1 %s; \n ", hui);

printf("(1,%d) %s;\n", n-1, guoqiao);

printf("1 %s; \ n\n", hui);

return (c+d+2*a + getShortestTime(arr, n-2));

}

}

}

void main()

{

int n = 5; p>

int a[] = {1,2,6,8,12};

printf("El tiempo más corto es %d\n", getShortestTime(a, n)

}