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