Trong bài toán này, chúng ta được cho 2 mảng x[], y[] sao cho (x,y) là tọa độ một điểm trên mặt phẳng 2D. Nhiệm vụ là in tất cả các điểm kèm theo tần suất xuất hiện của chúng.
Hãy xem ví dụ sau để hiểu rõ vấn đề:
Input: x[]={0, 1, 1, 0, 0} ; y[]={1, 2, 2, 2, 1} Output (0, 1) = 2 (1, 2) = 2 (0, 2) = 1Để giải quyết, ta cần lưu tần suất xuất hiện của mỗi điểm. Cần dùng cấu trúc dữ liệu map. Khóa của map là (x[i], y[i]), giá trị ánh xạ là tần suất nguyên tố.
Chương trình minh họa triển khai giải pháp:
Ví dụ
#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<<"Các điểm và tần suất xuất hiện của chúng là :\n"; printFrequencyofPoint(x, y, n); return 0; }Kết quả
Các điểm và tần suất xuất hiện của chúng là : (0, 1) -> 2 (0, 2) -> 1 (1, 2) -> 2