n개의 요소가 있는 배열 A가 있다고 가정합니다. 지구에는 n개의 평면이 있으며 1부터 n까지 번호가 매겨져 있습니다. 숫자가 i인 평면은 평면 A[i]를 좋아합니다. A[i] !=나. p가 q를 좋아하고, q가 r을 좋아하고, r이 p를 좋아하는 세 개의 평면 p, q, r이 있는지 확인해야 합니다.
따라서 입력이 A =[2, 4, 5, 1, 3]과 같으면 삼중항이 [2, 4, 1]이기 때문에 출력은 True가 됩니다.
단계
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
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