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 次浏览

开启你的 职业生涯

完成课程认证

开始学习
广告