题解 | #成绩排序#

成绩排序

http://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b

使用map<int,string>,插入后根据int作为key值来自动排好序,string为每次插入之后在后面增加新的名字,以保证最后可以按照插入的顺序来输出:

auto iter = myMap.find(score);
            if (iter == myMap.end())
                myMap.insert(pair<int, string>{score, name});
            else
            {
                iter->second += " ";
                iter->second += name;
            }

全部程序:

#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <unordered_set>
#include <map>
#include <list>
using namespace std;
int main()
{
    int num;
    while (cin >> num)
    {
        int flag;
        cin >> flag;
        map<int, string> myMap;
        for (int i = 0; i < num; i++)
        {
            string name;
            int score;
            cin >> name;
            cin >> score;

            auto iter = myMap.find(score);
            if (iter == myMap.end())
                myMap.insert(pair<int, string>{score, name});
            else
            {
                iter->second += " ";
                iter->second += name;
            }
        }
        if (flag)
        {
            for (auto i : myMap)
            {
                stringstream ss;
                ss << i.second;
                string strTemp;
                while (ss>>strTemp)
                {
                    cout << strTemp << ' ' << i.first << endl;
                }

            }
        }
        else
        {
            auto i = myMap.rbegin();
            while(i!=myMap.rend())
            {
                stringstream ss;
                ss << i->second;
                string strTemp;
                while (ss >> strTemp)
                {
                    cout << strTemp << ' ' << i->first << endl;
                }
                i++;
            }
        }


    }
    return 0;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务