类似华为16年题,可参考,下为代码修改,思想不变。
#include <iostream>
#include<bits/stdc++.h>
#include<string>
#include<algorithm>
using namespace std;
struct file {
string name;
int row;
int num;
};
vector<file> f;
string filenameall(string s) {
string temp ="";
for(int i = s.size() - 1; i >= 0; i--) {
if(s[i] != '\\') {
temp += s[i];
} else break;
}
reverse(temp.begin(), temp.end());
return temp;
}
int isin(file x) {
for(int i = 0; i < f.size(); i++) {
if(x.name == f[i].name && x.row == f[i].row) return i;
}
return -1;
}
bool cmp(file a, file b) {
return a.num > b.num;
}
int main()
{
string s;
//freopen("1.txt", "r", stdin);
while(cin >> s) {
int k;
file temp;
scanf("%d", &k);
//system("pause");
temp.name = filenameall(s);
temp.row = k;
int index = isin(temp);
if(index != -1) {
f[index].num++;
//cout << f[index].name << " " << f[index].row << " " << f[index].num << endl;
//system("pause");
} else {
temp.num = 1;
f.push_back(temp);
//cout << temp.name << " " << temp.row << " " << temp.num << endl;
//system("pause");
}
}
sort(f.begin(), f.end(), cmp);
for(int i = 0; i < f.size(); i++) {
//cout << f[i].name << " " << f[i].row << " " << f[i].num << endl;
}
for(int i = 0; i < f.size(); i++) {
if(i == 8) break;
string temm;
if(f[i].name.size() > 16) temm = f[i].name.substr(f[i].name.size() - 16, 16);
else temm = f[i].name;
cout << temm << " " << f[i].row << " " << f[i].num << endl;
}
return 0;
}

京公网安备 11010502036488号