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
广告