मान लीजिए हमारे पास 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