Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ เช็คสามรายการวนไปว่าชอบรายการต่อไปหรือเปล่า


สมมติว่าเรามีอาร์เรย์ A ที่มีองค์ประกอบ n มีเครื่องบิน n ลำบนโลกและมีหมายเลขตั้งแต่ 1 ถึง n เครื่องบินที่มีหมายเลข ฉันชอบเครื่องบิน A[i] A[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