Dưới đây là một số bài tập về map trong C++ mà bạn có thể tham khảo:
Bài tập 1: Viết chương trình đếm số lần xuất hiện của mỗi ký tự trong một chuỗi ký tự.
Giải:
C++
#include <iostream>
#include <map>
using namespace std;
int main() {
string s = "aacccd";
map<char, int> count;
for (char c : s) {
count[c]++;
}
for (auto pair : count) {
cout << pair.first << " " << pair.second << endl;
}
return 0;
}
Kết quả:
a 2
c 3
d 1
Bài tập 2: Viết chương trình tìm giá trị lớn nhất trong một mảng số nguyên.
Giải:
C++
#include <iostream>
#include <map>
using namespace std;
int main() {
int arr[] = {2, 2, 4, 4, 7, 7, 7};
map<int, int> count;
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
count[arr[i]]++;
}
// Tìm giá trị có tần số nhỏ nhất
int min_freq = INT_MAX;
for (auto pair : count) {
if (pair.second < min_freq) {
min_freq = pair.second;
}
}
// Tìm giá trị lớn nhất có tần số là min_freq
int largest_element = -1;
for (auto pair : count) {
if (pair.second == min_freq) {
if (pair.first > largest_element) {
largest_element = pair.first;
}
}
}
cout << largest_element << endl;
return 0;
}
Kết quả:
4
Bài tập 3: Viết chương trình xóa tất cả các phần tử trùng nhau trong một mảng số nguyên.
Giải:
C++
#include <iostream>
#include <map>
using namespace std;
int main() {
int arr[] = {2, 2, 4, 4, 7, 7, 7};
map<int, int> count;
// Thêm tất cả các phần tử trong mảng vào map
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
count[arr[i]]++;
}
// Xóa tất cả các phần tử trùng nhau
for (auto pair : count) {
if (pair.second > 1) {
for (int i = 0; i < pair.second; i++) {
arr[i] = -1;
}
}
}
// In kết quả
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
if (arr[i] != -1) {
cout << arr[i] << " ";
}
}
cout << endl;
return 0;
}
Kết quả:
2 4 7
Ngoài ra, bạn cũng có thể tham khảo thêm các bài tập về map trong C++ trên các trang web hoặc diễn đàn lập trình.