#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <set>
using namespace std;
int main() {
string str;
int n;
vector<string> load;//总字符串
vector<int> nums;//存行号
//vector<char> flag;//存盘符
vector<string>lu;//存16位路径
vector<string>chai;//中间变量
vector<int>result;//最后错误数量
while (cin >>str>>n) { // 找出行号
load.push_back(str);
nums.push_back(n);
}
for(int i=0;i<load.size();i++)//找出路径
{
istringstream it(load[i]);
string ch;
while(getline(it,ch,'\\'))
{
chai.push_back(ch);
}
int num=chai.size();
lu.push_back(chai[num-1]);
}
for(int i=0;i<nums.size();i++)//更新路径
{
if(lu[i].size()>=17)
{
lu[i]=lu[i].substr(lu[i].size()-16,lu[i].size()-1);//字符串按下标分割
}
}
//找出相同元素,去解题
set<string>reguler;
int len=0;
for(int i=0;i<100;i++)
result.push_back(1);
for(int i=1;i<lu.size();i++)
{
int flags=0;
for(int j=i-1;j>=0;j--)
{
if(lu[i]==lu[j] && nums[i]==nums[j])//发现相同错误
{
lu.erase(lu.begin()+i);
nums.erase(nums.begin()+i);
result[j]++;
flags=1;
}
}
if(flags)
i--;
}
//输出
if(lu.size()<9)
{
for(int i=0;i<lu.size();i++)
{
cout<<lu[i]<<" "<<nums[i]<<" "<<result[i]<<endl;
}
}
else
{
for(int i=lu.size()-8;i<lu.size();i++)
{
cout<<lu[i]<<" "<<nums[i]<<" "<<result[i]<<endl;
}
}
}
// 64 位输出请用 printf("%lld")
C++通用方法,没有什么高阶知识,最底层的知识硬磕



京公网安备 11010502036488号