Hướng dẫn giải của [200 đề thầy Đức] Bài 164: Thống kê phần tử mảng


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Hướng dẫn giải

Cho dãy N số nguyên có giá trị từ 0 đến 10^4. Đếm số lần mỗi giá trị xuất hiện và in theo thứ tự giá trị tăng dần.

Cách làm

Dùng mảng dem có 10001 phần tử, dem[v] là số lần giá trị v xuất hiện. Với mỗi số x đọc vào, tăng dem[x] lên 1. Sau đó duyệt v từ 0 đến 10000, nếu dem[v] > 0 thì in v, dấu hai chấm và dem[v].

Bẫy: mảng dem được khai báo bên ngoài hàm main nên tự động có giá trị 0.

#include <bits/stdc++.h>
using namespace std;

// dem[v] là số lần giá trị v xuất hiện trong dãy (0 <= v <= 10^4)
int dem[10005];

int main() {
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        int x;
        cin >> x;
        dem[x]++;
    }
    // Duyệt giá trị từ nhỏ đến lớn để in theo thứ tự tăng dần
    for (int v = 0; v <= 10000; v++) {
        if (dem[v] > 0) {
            cout << v << ":" << dem[v] << "\n";
        }
    }
    return 0;
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.