题解 | #简单错误记录#

简单错误记录

http://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb

冲了三个小时,终于完成了,一步一步往最终结果靠就行。
#include<bits/stdc++.h>
using namespace std;
int main ()
{
    string str[100];
    int n[100];
    int i=0;
    while(cin>>str[i]>>n[i])
    {
        i++;
    }
    int cnt=i;
    for(int j=0;j<cnt;j++)
    {
        int str_size=str[j].size();
        int pos=str[j].rfind('\\',str_size);
        str[j]=str[j].substr(pos+1,str_size);
    }
    int number=1;
    int newcnt;
    int flag=0;
    vector<int> st;
    st.push_back(1);
    vector<pair<string,int>> v;
    v.push_back(make_pair(str[cnt-1],n[cnt-1]));
    for(int j=cnt-2;j>=0;j--)
    {
        flag=0;
        for(int k=0;k<v.size();k++)
        {
            if(str[j].compare(v[k].first)==0&&n[j]==v[k].second)
            {
                st[k]++;
                st.push_back(st[k]);
                v.push_back(make_pair(str[j],n[j]));
                vector<pair<string,int>>::iterator pos=v.begin()+k;
                v.erase(pos);
                vector<int>::iterator pos1=st.begin()+k;
                st.erase(pos1);
                flag=1;
                break;
            }
        }
        if(flag==0)
        {
            v.push_back(make_pair(str[j],n[j]));
            st.push_back(1);
            number++;
        }
        newcnt=j;
    }
    for(int j=0;j<v.size();j++)
    {
        if(v[j].first.size()>16)
        {
            v[j].first=v[j].first.substr(v[j].first.size()-16,v[j].first.size());
        }
    }
    int temptemp=v.size();
    if(temptemp>8)
    {
        temptemp=8;
    }
    for(int j=0;j<temptemp;j++)
    {
        cout<<v[temptemp-1-j].first<<" "<<v[temptemp-1-j].second<<" "<<st[temptemp-1-j]<<endl;
    }
    return 0;
}


全部评论

相关推荐

头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
牛客5655:其他公司的面试(事)吗
点赞 评论 收藏
分享
在努力的外卷侠很靠谱:怎么,大家都没保底吗?我这美团已经入职了,不说了,系统派单了。
点赞 评论 收藏
分享
3 收藏 评论
分享
牛客网
牛客企业服务