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