C++ 程式用於檢查三個項是否迴圈像下一個項


假設我們有一個包含 n 個元素的陣列 A。地球上有 n 架飛機,它們從 1 到 n 編號。編號為 i 的飛機喜歡飛機 A[i]。A[i] != i。我們必須檢查是否有三架飛機 p、q 和 r,其中 p 喜歡 q,q 喜歡 r,r 喜歡 p。

因此,如果輸入與 A = [2, 4, 5, 1, 3] 相似,則輸出將為 True,因為三元組為 [2, 4, 1]。

步驟

為了解決這個問題,我們將遵循以下步驟 −

n := size of A
for initialize i := 0, when i < n, update (increase i by 1), do:
   if A[A[A[i + 1]]] is same as i + 1, then:
      return true
return false

示例

讓我們看看下面的實現,以便更好地理解 −

#include <bits/stdc++.h>
using namespace std;

bool solve(vector<int> A) {
   int n = A.size();
   for (int i = 0; i < n; i++) {
      if (A[A[A[i + 1]]] == i + 1) {
         return true;
      }
   }
   return false;
}
int main() {
   vector<int> A = { 2, 4, 5, 1, 3 };
   cout << solve(A) << endl;
}

輸入

{ 2, 4, 5, 1, 3 }

輸出

1

更新於: 03-Mar-2022

69 次瀏覽

開啟你的 職業生涯

完成課程認證

開始學習
廣告
© . All rights reserved.