这题没什么难的,就是逐行处理完空格问题,一一对比统计正确字符数就可以。
但是,这数据也太坑了,范文里也可能出现退格键,这谁想得到啊.....
Code:
#include <iostream>
#include <cstring>
using namespace std;
const int N = 1e4 + 4;
string stan[N], s[N];
int cnt;//范文的行数
int sum;//统计正确的字符数
double t;
//处理退格
void func(string &s)
{
if(s.find("<") != string::npos)
{
int temp = s.find("<");
while(temp != string::npos)
{
if(temp == 0) s = s.substr(1);
else
{
string ss = s;
s = "";
if(temp - 2 >= 0) s += ss.substr(0, temp - 1);
if(temp + 1 < ss.size()) s += ss.substr(temp + 1);
}
temp = s.find("<");
}
}
}
int main()
{
while(getline(cin, stan[cnt]), stan[cnt] != "EOF") cnt ++ ;
cnt -- ;
int i = 0;
while(getline(cin, s[i]), s[i] != "EOF") i ++ ;
cin >> t;
for(i = 0; i <= cnt; i ++ )
{
//处理退格
func(stan[i]);
func(s[i]);
for(int j = 0; j < min(stan[i].size(), s[i].size()); j ++ )
if(stan[i][j] == s[i][j])
sum ++ ;
}
printf("%.lf\n", sum * 60 / t);
// system("pause");
return 0;
}