40分求助,大佬们帮忙捉一下虫

P5587 打字练习

@ 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


|