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

2D座標点を昇順で印刷し、その後にC++で頻度を印刷します。


この問題では、(x、y)が2D平面内の点の座標を与えるような2つの配列x []、y[]が与えられます。私たちの仕事は、すべてのポイントとその発生頻度を印刷することです。

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

Input: x[]={0, 1, 1, 0, 0} ; y[]={1, 2, 2, 2, 1}
Output
(0, 1) = 2
(1, 2) = 2
(0, 2) = 1

この問題を解決するには、各ポイントの発生頻度を保存する必要があります。したがって、これにはマップデータ構造を使用する必要があります。マップのキーは(x [i]、y [i])であり、マップされた値は整数の発生頻度です。

プログラムは、私たちのソリューションの実装を示します

#include <bits/stdc++.h>
using namespace std;
void printFrequencyofPoint(int x[], int y[], int n){
   map<pair<int, int>, int> pFreq;
   for (int i = 0; i < n; i++)
   pFreq[make_pair(x[i], y[i])]++;
   map<pair<int, int>, int>::iterator i;
   for (i = pFreq.begin(); i != pFreq.end(); i++) {
      cout<<"("<<(i->first).first <<", "<< (i->first).second <<") -> ";
      cout<<i->second << "\n";
   }
}
int main() {
   int x[]={0, 1, 1, 0, 0};
   int y[]={1, 2, 2, 2, 1};
   int n=5;
   cout<<"The points and their frequency of occurance is :\n";
   printFrequencyofPoint(x, y, n);
   return 0;
}

出力

The points and their frequency of occurance is :
(0, 1) -> 2
(0, 2) -> 1
(1, 2) -> 2

  1. C++でのライン上の最大ポイント

    2D平面があるとします。同じ直線上にある点の最大数を見つける必要があります。したがって、ポイントが次のような場合- それから4つのポイントがあります これを解決するには、次の手順に従います- n:=ポイントの数、n <3の場合、nを返します ans:=2 1からn–1の範囲のiの場合 カウント:=0 インデックスiとi– 1から2つのポイントを取ります。これらは、p1、p2です。 p1ポイントとp2ポイントが同じ場合、 0からn–1の範囲のjの場合 points [j] .x=p1.xおよびpoints[j].y =p1.yの場合、

  2. バイナリツリーレベルをC++でソートされた順序で出力します

    この問題では、二分木が与えられ、すべてのノードを値の並べ替えられた順序でレベルで出力する必要があります。 概念をよりよく理解するために例を見てみましょう。 入力 − 出力 − 20 6 15 2 17 32 78 この問題を解決するには、ツリーの各レベルのソートされた順序を印刷する必要があります。このために、キューと2つの優先キューを作成する必要があります。 NULLセパレータは、2つのレベルを分離するために使用されます。 例 論理を説明するプログラム- #include <iostream> #include <queue> #include <