• SOJ 1027 MJ,Nowhere to Hide


    题目大意:输入n行(id, ip)对,对同一个ip,第一次出现的ip对应的id为Main_ID, 第二次出现的ip对应的id为MJ_ID, 输出n / 2个(Main_ID, MJ_ID)对,输出格式为 MJ_ID is the MaJia of Main_ID,输出按Main_ID的字典序输出。当n为0时,输入结束。

    解题思路:这是一种映射问题,用数据结构map非常合适。每次读入(id, ip) 对,检查map中是否已存在键值为ip的键,若不存在,则插入(id, ip)对,若存在则存放到结果映射表中。

         最后遍历结果映射表输出答案。

    代码如下:

    #include <iostream>
    #include <map>
    #include <string>
    using namespace std;
    
    int main() {
        int n;
        while (cin >> n, n) {
            map<string, string> m;
            map<string, string> ans;
    
            string id, ip;
            for (int i = 0; i < n; i++) {
                cin >> id >> ip;
                if (m.find(ip) == m.end()) {
                    m[ip] = id;
                } else {
                    ans[m[ip]] = id;
                }
            }
    
            map<string, string>::iterator iter = ans.begin();
            while (iter != ans.end()) {
                cout << iter->second << " is the MaJia of " << iter->first << endl;
                iter++;
            }
            cout << endl;
    
        }
        return 0;
    }
  • 相关阅读:
    MySQL binlog_ignore_db 参数最全解析
    推荐几款MySQL相关工具
    MySQL从库维护经验分享
    swaggert随笔
    springBoot
    git-本地仓库操作
    springboot初识
    spring data jpa
    mybatis复习笔记----关于一些需记忆的点
    mybatis复习笔记----关于标签
  • 原文地址:https://www.cnblogs.com/mchcylh/p/4833424.html
Copyright © 2020-2023  润新知