C ++で指定された条件を満たす、2次元空間内の点のトリプレットペア(A、B、C)をカウントします。
2次元空間上のN点の入力が与えられます。目標は、1つのポイントが他の2つの間の線の中間点になるように、入力からポイントのトリプレットの数を見つけることです。つまり、トリプレットが(A、B、C)の場合、BはAとC(またはA、B、Cの他の任意の組み合わせ)の中点です。
これを行うには、すべてのポイントをペア
例を挙げて理解しましょう。
入力
{ 1,2 }, { 4,2} , { 2,1 } , { 7,2 } N=4 pairs
出力
Count of triplet pairs that satisfy the given condition are: 1
説明
Here {4,2} is mid-point between {1,2} and {7,2}. Only 1 such triplet
入力
{ 1,2 }, { 4,2} , { 2,1 } , { 5,2 }, { 8,1} , {1,1} N=6
出力
Count of triplet pairs that satisfy the given condition are: 1
説明
No such triplet exist
以下のプログラムで使用されているアプローチは次のとおりです
-
タイプ
のペアのベクトルを取得しています。 -
各ペアには(x、y)座標が含まれています。
-
関数mid_point(vector
> vec、int size)は、ベクトルとそのサイズを入力として受け取り、中点条件を満たすトリプレットの数を返します。 -
このようなトリプレットの場合、初期変数カウントを0とします。
-
ベクトルからのすべてのペアをset
>セットに挿入します。すべてのユニークなポイントがあります。 -
ポイントの各ペアに対して2つのforループを使用してベクトルをトラバースします。
-
両方のポイントのx座標の合計を整数point_Aに格納し、両方のポイントのy座標の合計を整数point_Bに格納します。
-
point_Aとpoint_Bの両方の合計が偶数の場合は、中間点の状態を確認してください。
-
ペア(point_A / 2、point_B / 2)がセット内のペアとして存在する場合、中間点が存在することを意味します。トリプレットのインクリメントカウント。
-
最終的に、カウントにはトリプレットの数が含まれます。
-
forループの最後に結果としてカウントを返します。
例
#include <bits/stdc++.h> using namespace std; int mid_point(vector<pair<int, int>> vec, int size){ int count = 0; set<pair<int, int> > sets; for (int i = 0; i < size; i++){ sets.insert(vec[i]); } for (int i = 0; i < size; i++){ for (int j = i + 1; j < size; j++){ int point_A = vec[i].first + vec[j].first; int point_B = vec[i].second + vec[j].second; if (point_A % 2 == 0 && point_B % 2 == 0){ if (sets.find(make_pair(point_A / 2, point_B / 2)) != sets.end()){ count++; } } } } return count; } int main(){ vector<pair<int, int>> vec = { { 9, 2 }, { 5, 2 }, { 1, 2 } }; int size = vec.size(); cout<<"Count of triplet pairs (A, B, C) of points in 2-D space that satisfy the given condition are: "<<mid_point(vec, size); }
出力
上記のコードを実行すると、次の出力が生成されます-
Count of triplet pairs (A, B, C) of points in 2-D space that satisfy the given condition are: 1
-
C++で指定された条件を満たすサブセットをカウントします
数値の配列と整数xを入力として指定します。目標は、arr []のすべてのサブセットを見つけて、そのセットの個々の要素とそれらの合計をxで完全に割り切れるようにすることです。 例 入力 arr[] = {1,2,3,4,5,6} x=3 出力 Count of subsets that satisfy the given condition :3 説明 The subsets will be: [3], [6], [3,6] 入力 arr[] = {1,2,3,4,5,6} x=4 出力 Count of subsets that satisfy the given condition :1
-
C++のグリッドで指定された方向に可能な移動をカウントします
サイズnxmのグリッドと開始点x、yを表す2つの変数nとmです。 また、移動((1,1)、(2,2))などとしてグリッド内を移動するために実行できるステップ/移動のペアも指定されます。移動の各ペアは、x、y軸で実行されるステップの単位を表します。目標は、境界[1、n] X [1、m]内のグリッド内をトラバースするために実行できる合計ステップを見つけることです。nが5、mが4、現在の位置が2、2で、選択されたステップが( 1、-1)次に、このステップを1回実行すると、(3,1)になります。このステップを再度実行すると、(4、-1)になります。これは、-1が範囲外であるため無効です。 例