したがって、配列に別の配列の要素が同じ順序で含まれているかどうかを確認する必要があります。両方の配列がソートされ、要素を複製することができます。配列が別の配列内にあるかどうかを確認しますが、順序は同じです。要素は同じです。
私はこのようなことを考え出しましたが、状況によってはあまりにも複雑です。例えば
public static int function(int[] A, int[] B)
{
int indexB = 0;
int matched = 0;
for(int j=0;j<A.Count();j++)
{
indexB=0;
matched=0;
for (int i = j; i < B.Count()+j; i++)
{
if (A[i] == B[indexB])
{
matched++;
indexB++;
}
else
{
break;
}
}
if (matched == B.Count())
{
return 1;
}
}
return 0;
}
:
int[] A = { 1, 2, 2, 2, 3, 4, 4, 4, 5, 8, 10 };
int[] B = { 2, 2, 3, 4, 4, 4};
Bアレイは、アレイ内に含まれることになります。複雑さに私を助けてください。
私の答えを撤回しました。 「B」の各要素は、「A」にあるように少なくとも(Bで)同じ多重度を持たなければならないのは正しいですか?たとえば 'A = {2}'ならば、 'B = {2,2} 'は「良い」サブセットではないということは正しいですか?なぜ 'int'を返し、' bool'を返す代わりに '1'と' 0'を使うのですか? –
最初のループでは、範囲を* A.Count-B.Count *に制限します。最適化が必要ですか(たとえば、AとBが巨大な場合)? – Graffito