[Xâu Ký Tự Cơ Bản]. Bài 34. Tần suất của tên người

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Nguồn bài:
28Tech
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Cho danh sách tên người, bạn hãy xác định xem số lần xuất hiện của mỗi người trong danh sách là bao nhiêu? Sau đó liệt kê tên người và số lần xuất hiện theo thứ tự từ điển tăng dần

Đối với ngôn ngữ lập trình C, bạn sử dụng struct này để giải quyết bài toán :

struct name{
    char ten[1000];
    int fre;
};

Đầu vào

Gồm không quá 1000 dòng, mỗi dòng là tên 1 người


Giới hạn

Tên người chỉ bao gồm chữ cái và dấu cách


Đầu ra

In ra tên người và số lần xuất hiện theo thứ tự từ điển tăng dần


Ví dụ :

Input 01
joe biden
tim cook
leonardo da vinci
28tech
leonardo da vinci
elon musk
leonardo da vinci
28tech
28tech
joe biden
Output 01
28tech 3
elon musk 1
joe biden 2
leonardo da vinci 3
tim cook 1

Bình luận

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



  • 0
    bengokyeuanh99  đã bình luận lúc 6, Tháng 9, 2025, 8:49

    Full AC

    include <iostream>

    include <string>

    include <unordered_map>

    include <vector>

    include <algorithm>

    using namespace std;

    struct PersonFrequency { string name; int count; };

    using FrequencyMap = unordered_map<string, int>;

    FrequencyMap buildFrequency(istream& input) { FrequencyMap freq; string line; while (getline(input, line)) { if (!line.empty()) { ++freq[line]; } } return freq; }

    vector<PersonFrequency> convertToVector(const FrequencyMap& freq) { vector<PersonFrequency> result; result.reserve(freq.size()); for (const auto& kv : freq) { result.push_back({kv.first, kv.second}); } return result; }

    void sortByName(vector<PersonFrequency>& entries) { sort(entries.begin(), entries.end(), { return a.name < b.name; }); }

    void printFrequencies(const vector<PersonFrequency>& entries, ostream& output) { for (const auto& entry : entries) { output << entry.name << " " << entry.count << '\n'; } }

    int main() { ios::syncwithstdio(false); cin.tie(nullptr);

    auto frequencyMap = buildFrequency(cin);
    auto entries = convertToVector(frequencyMap);
    sortByName(entries);
    printFrequencies(entries, cout);
    return 0;
    

    }


    • 0
      dungdeptrai  đã bình luận lúc 6, Tháng 9, 2025, 12:43

      chị có blog cá nhân k cho em xin follow với :)) Học hỏi thêm từ chị


      • 0
        bengokyeuanh99  đã bình luận lúc 6, Tháng 9, 2025, 14:03

        Không ấy, mình không có làm blog á