@
JJaylo
同错
by oymz @ 2024-02-29 19:45:05
```cpp
yy<<<<<<<<<<<<xxx
EOF
y<<<yyyyy<<<<<xx<xx
EOF
60
```
```cpp
3
```
试一下
by oymz @ 2024-02-29 19:53:03
@[oymz](/user/921267) 好
by JJaylo @ 2024-03-09 14:19:19
@[oymz](/user/921267) 我的思路是跳过退格键及退格的字符,应该是删除
by JJaylo @ 2024-03-09 14:22:14
```cpp
#include<bits/stdc++.h>
using namespace std;
const int N = 1e4 + 5;
stack<char> stka[N], stkb[N];
int t, lena, lenb, ans, k;
string s;
int main(){
while(1){
getline(cin, s);
if(s == "EOF"){
break;
}
lena++;
for(int i = s.size() - 1; i >= 0; i--){
if(s[i] == '<'){
k++;
}
else if(s[i + 1] == '<'){
i -= k - 1;
k = 0;
}
else{
stka[lena].push(s[i]);
// cout << s[i];
}
}
}
//cout << '\n';
while(1){
getline(cin, s);
if(s == "EOF"){
break;
}
lenb++;
for(int i = s.size() - 1; i >= 0; i--){
if(s[i] == '<'){
k++;
}
else if(s[i + 1] == '<'){
i -= k - 1;
k = 0;
}
else{
stkb[lenb].push(s[i]);
//cout << s[i];
}
}
}
for(int i = 1; i <= min(lena, lenb); i++){
while(!stka[i].empty() && !stkb[i].empty()){
if(stka[i].top() == stkb[i].top()){
ans++;
}
//cout << stka[i].top() << ' ' << stkb[i].top() << '\n';
stka[i].pop();
stkb[i].pop();
}
}
cin >> t;
cout << round((double)(ans * 60.0) / (double)t);
}
/*
yy<<<<<<<<<<<<xxx
EOF
y<<<yyyyy<<<<<xx<xx
EOF
60
*/
```
建议用栈
by oymz @ 2024-03-10 13:08:32