Nuestro profesor nos dio la siguiente asignación:Solución de problemas de forma recursiva en C
A "correct" series is one in which the sum of its members equals to the index of its first member.
Se supone que el programa para encontrar la longitud de la serie más larga "correcto" dentro de una serie de n números. Por ejemplo, si la serie de entrada sería arr[4]={1, 1, 0, 0}
, la salida (serie "correcta" más larga) sería 3
arr[0]=1. 0!=1
por lo tanto, la serie más larga aquí es 0
.
arr[1]=1,and 1=1.
pero los siguientes miembros también suman hasta 1 como se muestra a continuación:
1=arr[1]+arr[2]+arr[3] = 1+ 0 + 0
, por lo tanto, la serie más larga aquí es 3
.
La salida en este ejemplo es 3
.
Esto es lo que tengo hasta ahora:
int solve(int arr[], int index, int length,int sum_so_far)
{
int maxwith,maxwithout;
if(index==length)
return 0;
maxwith = 1+ solve(arr,index+1,length,sum_so_far+arr[index]);
maxwithout = solve(arr,index+1,length,arr[index+1]);
if(sum_so_far+arr[index]==index)
if(maxwith>maxwithout)
return maxwith;
return maxwithout;
return 0;
}
int longestIndex(int arr[], int index,int length)
{
return solve(arr,0,length,0);
}
¿Qué estoy haciendo mal aquí?
No se supone que tengamos que realizar bucles en esta tarea.
"la suma de sus miembros es igual al índice de su primer miembro" - el índice de su primer miembro es siempre 0. Creo que tiene un error tipográfico aquí. –
Creo que se refiere al primer miembro de la serie, no a la matriz. En su ejemplo, la serie contiene los miembros 1, 2 y 3, por lo que el índice del primer miembro es 1. – brydgesk
@Tim: no creo que sea un error tipográfico, ¿qué pasa si es 0? @ Harry86: ¿qué no está funcionando? ¿Recibes una respuesta incorrecta, un error o qué? – IVlad