配列の値は1から100の間しかないことがわかっています。それは私の関数が正しくないと思われます。理由を理解できません。ここで は私の機能である:2つの配列が入れ子になっているかどうかを調べる関数を書こうとしました。
int CheckPermutation3(int arr1[], int arr2[], int size)
{
int count1[100], count2[100]; //the size 100 because in that case values are only between 1 and 100//
int i;
for(i=0; i<100; i++)
{
count1[i]=0;
count2[i]=0;
}
for(i=0;i<size;i++) //counting the elements of each array//
count1[arr1[i]]++;
for(i=0;i<size;i++)
count2[arr2[i]]++;
for(i=0;i<100;i++) //comparison//
if (count1[i]!= count2[i])
return 0;
return 1;
}
これは方法ではありません。並べ替えて比較する。 –
あなたの機能が正しくないことをあなたに納得させるものは何ですか?データが上記の範囲内にあると仮定すると、それは完全にうまく見えます。それをテストするために特定のデータを使用しましたか? @EugeneSh。 – dasblinkenlight
制限された整数値の範囲がある場合には、カウントに間違いはありません。 – AlexD