Computer >> Máy Tính >  >> Lập trình >> C ++

Truy vấn để kiểm tra xem có thể nối các hộp trong một vòng kết nối trong C ++ hay không


Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình tìm các truy vấn để kiểm tra xem có thể nối các hộp trong một vòng kết nối hay không.

Đối với điều này, chúng tôi sẽ được cung cấp với một vòng tròn các hộp chạy từ 1 đến n. Nhiệm vụ của chúng tôi là tìm xem hộp tôi có thể được kết nối với hộp j bằng một thanh mà không giao nhau giữa các đường trước đó hay không.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
//checking if making a circle from boxes is possible
void isPossible(int n, int q, int queryi[], int queryj[]) {
   int arr[50];
   for (int i = 0; i <= n; i++)
      arr[i] = 0;
   for (int k = 0; k < q; k++) {
      int check = 0;
      if (queryj[k] < queryi[k]) {
         int temp = queryi[k];
         queryi[k] = queryj[k];
         queryj[k] = temp;
      }
      if (arr[queryi[k]] != 0 || arr[queryj[k]] != 0)
         check = 1;
      else if (queryi[k] == queryj[k])
         check = 1;
      else {
         for (int i = 1; i < queryi[k]; i++) {
            if (arr[i] != 0 && arr[i] < queryj[k] && queryi[k] < arr[i]) {
               check = 1;
               break;
            }
         }
         if (check == 0) {
            for (int i = queryi[k] + 1; i < queryj[k]; i++) {
               if (arr[i] != 0 && arr[i] > queryj[k]) {
                  check = 1;
                  break;
               }
            }
         }
      }
      if (check == 0) {
         cout << "Possible" << endl;
         arr[queryi[k]] = queryj[k];
         arr[queryj[k]] = queryi[k];
      }
      else
         cout << "Not Possible" << endl;
   }
}
int main() {
   int size = 5;
   int q = 2;
   int queryi[] = { 3, 5 };
   int queryj[] = { 1, 4 };
   isPossible(size, q, queryi, queryj);
   return 0;
}

Đầu ra

Possible
Possible