Ich versuche, eine Funktion zu schreiben, die eine Liste von Ganzzahlen nimmt und alle arithmetischen Sequenzen darin findet.Arithmetische Schnitte in C
A = [-1, 1, 3, 3, 3, 2, 1, 0] Es gibt fünf arithmetische Sequenzen in dieser Liste: (0, 2), (2,4), (4, 6), (4,7), (5,7) - dies sind Indizes des ersten und letzten Elements einer Sequenz. Eine Sequenz ergibt sich aus dem Unterschied zwischen Elementen.
Wie Sie aus dem obigen Beispiel sehen - die Sequenz muss länger als 2 Elemente sein (sonst würde es eine Sequenz zwischen jeweils zwei Elementen finden).
Die Funktion, die ich schreiben muss muss die Anzahl der Sequenzen zurückkehren es auf der Liste findet - in diesem Fall sollten sie zurückkehren 5.
ich irgendwie bin stecken - versucht, ein paar verschiedene Ansätze, aber kläglich gescheitert . Die neueste Sache, die ich getan habe, ist:
#include<stdio.h>
int main() {
// your code goes here
long int A[]={-1, 1, 3, 3, 3, 2, 1, 0};
//int N= sizeof(A)/sizeof(A[0]);
int N=8;
printf("%d", solution(A,N));
return 0;
}
int solution (long int A[], int N)
{
int numSlices=0;
int tot;
// Get the Consecutive Array
for(int iOut=0; iOut<N; iOut++)
{
int startIndex = iOut;
int endIndex;
long int diff;
for(int iIn=iOut; iIn<N-2; iIn++)
{
if((A[iIn]-A[iIn+1]) == (A[iIn+1]-A[iIn+2]))
continue;
else
{
endIndex = iIn+1;
iOut=endIndex+1;
printf ("SI = %d \t EI = %d \n", startIndex, endIndex);
break;
}
}
int ln=endIndex - startIndex;
if (ln >=3)
numSlices +=(ln-2)* (ln-1);
// 1*
}
return numSlices;
}
* „kläglich gescheitert“ * wird nicht definiert, was genau schief gelaufen ist. Verstand ist klarer? – CinCout
Und wie ist es markiert "C" und "C++"? Sie sind zwei * verschiedene * Sprachen. – CinCout