top1编程
← 返回题目
题解

【基础】户口统计

1 条题解

  • 0
    @ 2026-7-29 0:15:23
    #include <iostream>
    #include <map>
    #include <vector>
    #include <string>
    #include <algorithm>
    using namespace std;
    
    int main() {
        map<string, vector<string>> families;
        string currentHead;
        string line;
    
        while (true) {
            getline(cin, line);
            if (line.empty()) continue;
    
            if (line[0] == '$') {
                break;
            }
            else if (line[0] == '#') {
                // 新户主
                currentHead = line.substr(1);
                families[currentHead].push_back(currentHead); // 户主本人加入家庭
            }
            else if (line[0] == '+') {
                // 家庭成员
                string member = line.substr(1);
                if (!currentHead.empty()) {
                    families[currentHead].push_back(member);
                }
            }
            else if (line[0] == '?') {
                // 查询请求
                string queryName = line.substr(1);
                if (families.find(queryName) != families.end()) {
                    // 找到户主,输出家庭成员(排序)
                    vector<string>& members = families[queryName];
                    sort(members.begin(), members.end());
                    for (const string& name : members) {
                        cout << name << endl;
                    }
                } else {
                    cout << "no data" << endl;
                }
            }
        }
    
        return 0;
    }
    
    • 1