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); p>
printf("(1,3) %s ;\n", guoqiao);
return (arr[0]+arr[1]+arr[2]); p>
}
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> p>
int a[] = {1,2,6,8,12};
printf("El tiempo más corto es %d\n", getShortestTime(a, n)
}