C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

数値がC++プログラムのL-RのN範囲にあるかどうかを確認するためのクエリ


この問題では、n個の範囲(L、R)、L-Rで構成される2次元行列arr[][2]が与えられます。そして、Qはそれぞれ整数値で構成されるクエリを実行します。私たちのタスクは、クエリを解決して、数値がL-RのN範囲にあるかどうかを確認するプログラムを作成することです。

問題の説明 −ここでは、クエリの各要素がいずれかの範囲に含まれるように、各クエリを解決します。

範囲を重複させることはできません。

問題を理解するために例を見てみましょう

入力

arr[n][2] = { {5, 7}, {1, 3}, {9, 12} } n = 3 Q = 2, query = {10, 4}

出力

Yes
No

説明

問題を解決する簡単な方法は、各クエリを解決し、要素が存在する範囲を見つけることです。範囲のいずれかにある場合はtrueを返し、そうでない場合はfalseを返します。範囲の値に基づいてマトリックスを並べ替えると便利です。

アルゴリズム

ステップ1 −行列の行を並べ替えます。つまり範囲に基づいて並べ替えます。

ステップ2 −すべてのクエリでi->0からQまでループします。

ステップ2.1 −要素がいずれかの範囲にある場合、つまり(arr [i] [0] <=q &&arr [i] [1]> =q)->trueを返します。

ソリューションの動作を説明するプログラム

#include <iostream>
using namespace std;
bool isPresent(int arr[][2], int n, int element){
   for(int i = 0; i < n; i++){
      if(arr[i][0] <= element && arr[i][1] >= element )
      return true;
   }
   return false;
}
void solveQueries_Range(int arr[][2], int n, int Q, int query[]){
   int temp[2];
   for(int j = 0; j < (n - 1); j++){
      for(int k = (j + 1); k < n; k++)
      if(arr[j][0] > arr[k][0]){
         temp[0] = arr[k][0]; temp[1] = arr[k][1];
         arr[k][0] = arr[j][0]; arr[k][1] = arr[j][1];
         arr[j][0] = temp[0]; arr[j][1] = temp[1];
      }
   }
   for(int i = 0; i < Q; i++ ){
      if(isPresent(arr, n, query[i]))
         cout<<"For Query "<<(i + 1)<<": The number "<<query[i]<<" lies in the range\n";
      else
         cout<<"For Query "<<(i + 1)<<": The number "<<query[i]<<" does not lie in the range\n";
   }
}
int main(){
   int arr[][2] = { {5, 7}, {1, 3}, {9, 12} };
   int n = 3;
   int Q = 2;
   int query[] = { 10, 4 };
   solveQueries_Range(arr, n, Q, query);
   return 0;
}

出力

For Query 1: The number 10 lies in the range
For Query 2: The number 4 does not lie in the range

  1. C++で3つのポイントが同一線上にあるかどうかをチェックするプログラム

    3つの異なる値のポイントが与えられ、タスクはポイントが同一線上にあるかどうかを確認することです。 ポイントが同じ線上にある場合は同一線上にあると言われ、異なる線上にある場合は同一線上にありません。以下に、同一線上および非同一線上の点の図を示します。 入力 x1 = 1, x2 = 2, x3 = 3, y1 = 1, y2 = 4, y3 = 5 出力 no points are not collinear 入力 x1 = 1, y1 = 1, x2 = 1, y2 = 4, x3 = 1, y3 = 5 出力 points are collinear 以下のプログラム

  2. C++でべき等行列をチェックするプログラム

    行列M[r][c]が与えられた場合、「r」は行数を示し、「c」はr=cが正方行列を形成するような列数を示します。与えられた正方行列がべき等行列であるかどうかを確認する必要があります かどうか。 べき等行列 行列「M」はべき等行列と呼ばれます 行列「M」にそれ自体を掛けたものだけが同じ行列「M」を返す場合、つまり M * M=M。 以下の例のように- 上記の行列はそれ自体で乗算され、同じ行列を返すと言えます。したがって、マトリックスはIデポテンツマトリックスです。 。 例 Input: m[3][3] = { {2, -2, -4},    {-1, 3,