Unser Professor hat uns die folgende Zuordnung:Lösen von Problemen rekursiv in C
A "correct" series is one in which the sum of its members equals to the index of its first member.
Das Programm soll die Länge der längsten „richtigen“ Serie innerhalb einer Reihe von n Zahlen finden.
Beispiel: Wenn die Eingangsserie arr[4]={1, 1, 0, 0}
wäre, wäre der Ausgang (längste "richtige" Serie) 3
.
arr[0]=1. 0!=1
daher ist die längste Serie hier 0
.
arr[1]=1,and 1=1.
aber die folgenden Mitglieder summieren sich auch zu 1 wie folgt:
1=arr[1]+arr[2]+arr[3] = 1+ 0 + 0
, daher ist die längste Serie hier 3
.
Die Ausgabe in diesem Beispiel lautet 3
.
Dies ist, was ich bisher:
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);
}
Was mache ich falsch hier?
Wir sind nicht uns Schleifen auf diese Aufgabe.
"Summe seiner Mitglieder entspricht dem Index seines ersten Mitglieds" - der Index des ersten Mitglieds ist immer 0. Ich denke, Sie haben einen Tippfehler hier. –
Ich denke, er meint das erste Mitglied der Serie, nicht das Array. In seinem Beispiel enthält die Serie die Elemente 1, 2 und 3, also der Index des ersten Mitglieds ist 1. – brydgesk
@Tim: glaube nicht, dass es ein Tippfehler ist, also was ist, wenn es 0 ist? @ Harry86: was funktioniert nicht? erhalten Sie eine falsche Antwort, einen Fehler oder was? – IVlad