2020年7月16日 星期四

10420 - List of Conquests

解題思路:
輸入只要能讀到第一個單字,後面用getline讀進來就可以忽略了。
然後就看現在讀到的國家有沒有記錄過,有就把次數加1,沒有就加進去然後次數為1。
輸出照字典序。

程式碼:
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;

int main()
{
    int n;
    string s,ignore;
    vector<string> country;
    vector<int> times;
    while(cin>>n)
    {
        for(int i=0;i<n;i++)
        {
            cin>>s;
            cin.ignore();
            getline(cin,ignore);
            if(find(country.begin(),country.end(),s)==country.end()) 
                country.push_back(s),times.push_back(1);
            else
            {
                int l=0;
                for(auto it:country)
                {
                    if(it==s)
                        break;
                    l++;
                }
                times[l]++;
            }
        }
        for(int i=0;i<country.size();i++)
        {
            for(int j=0;j<country.size();j++)
            {
                if(country[i]<country[j])
                {
                    swap(country[i],country[j]);
                    swap(times[i],times[j]);
                }
            }
        }
        for(int i=0;i<country.size();i++)
            cout<<country[i]<<" "<<times[i]<<endl;
    }
    return 0;
}

沒有留言:

張貼留言