题解 | #简单错误记录#
简单错误记录
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;
}