Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 원의 상자를 결합할 수 있는지 확인하는 쿼리


이 튜토리얼에서는 서클에서 상자를 결합할 수 있는지 확인하는 쿼리를 찾는 프로그램에 대해 설명합니다.

이를 위해 1에서 n까지 이어지는 상자 원이 제공됩니다. 우리의 임무는 이전 막대와 교차하지 않고 막대로 상자 i를 상자 j에 연결할 수 있는지 여부를 찾는 것입니다.

예시

#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;
}

출력

Possible
Possible