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

2차원 좌표점을 오름차순으로 인쇄한 다음 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