整数のリストを取り、その中のすべての算術列を見つける関数を作成しようとしています。Cの算術スライスシーケンス
A = [-1,1,3,3,3,2,1,0] このリストには、(0,2)、(2,4)、(4,6 )、(4,7)、(5,7) - これらはシーケンスの最初と最後の要素のインデックスです。シーケンスは、要素の違いによって導出されます。
上記の例からわかるように、シーケンスは2つ以上の要素でなければなりません(そうでない場合は、2つの要素の間にシーケンスがあります)。
私が書く必要がある機能は、それがリストに見つかった配列の数を返さなければなりません - このケースでは、私は一種のこだわっている5.
を返す必要があります - は、いくつかの異なるアプローチを試みたが、無残に失敗しました。 。私がやった最新のものは次のとおりです:
#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;
}
「正確に何が間違っていたのか」は定義しません。心はもっと明らかですか? – CinCout
そしてそれは 'C'と' C++ 'の両方にどのようにタグ付けされていますか?彼らは2つの異なる*言語です。 – CinCout