2017-09-08 25 views
-3

ここでの主な目的は、2つの数列が一致する順序かどうかを確認することです。例えば、8 7 4 5 1 2と80 70 40 50 10 12は一致する順序であり、 1 2 3 4 5と9 8 7 6 5は一致する順序ではない。等価性の確認

コードは次のとおりです。簡単にするために、私は両方の配列の長さを同じと仮定しました。 if-conditionは、2つの同じ(等しい)数字があるシーケンスを除いて、正確に注文同等物を見つけます。例えば、1 2 2と2 2 1は等価な順序ではありませんが、等価であることを示しています。これは私が修正したい主なバグです。誰かがこのif-conditionで私を助けることができたら、それは素晴らしいことでしょう。私が理解、あなたのような何かをしたいから

+0

あなたは=と<=正しい>よろしいですか?それは1 2 2と2 2 1バグの原因です。 – Tyler

+0

'1223'と' 1234'は等価であるべきですか? – Jarod42

+0

ええ、同じ連続した要素がない場合、うまくいきます。最初の2つの要素について、((8 <= 6)&&(80 <= 60))|| ((8> = 6)&&(80> = 60))、後の第2部分|| if文全体を真にするtrueに対応します。 –

答えて

0

int is_equivalency(const int* arr1, const int* arr2, int size) 
{ 
    for (int i = 0; i + 1 < size; ++i) { 
     int j = i + 1; 

     if ((arr1[i] == arr1[j] && arr2[i] != arr2[j]) 
      || (arr1[i] < arr1[j] && arr2[i] >= arr2[j]) 
      || (arr1[i] > arr1[j] && arr2[i] <= arr2[j])) 
     { 
      return 0; 
     } 
    } 
    return 1; 
} 

​​

関連する問題