sicily 1252

    技术2024-07-18  61

    总共WA3次,第一次以为

    <word>erone who <word>s、 <word>tionthe process of <word>ing

    这两种会把新的单词剪掉后缀还要加s或者ing。改之。。

    第二次把在后面加s或者ing或者again的顺序搞反。改之。。

    第三次,重新看题目,注意到一句很关键的话: You need to expand at most one prefix and one suffix,当时吐血了。。后来加了个计数器,AC。。。相当无语的一题。。

    #include <iostream> #include <cstring> #include <string> #include <vector> using namespace std; string cur; string anspre; string anssuf; string pre[4] = {"anti", "post", "pre", "un"}; string _pre[4] = {"against ", "after ", "before ", "not "}; string suf[3] = {"ing", "ize", "s"}; string _suf[3] = {"to actively ", "change into ", "multiple instances of "}; vector<int> v; //1表示前缀为re, 2表示后缀为er, 3表示后缀为ing int preTime; int sufTime; void _change() { for(int i = 0; i < 4 && preTime < 1; i++) { int j = 0; for(; j < pre[i].size() && j < cur.size(); j++) { if(pre[i][j] != cur[j]) { break; } } if(j == pre[i].size()) { preTime++; anspre = anspre + _pre[i]; cur.erase(0, pre[i].size()); _change(); } } for(int i = 0; i < 3 && sufTime < 1; i++) { int j = 0; for(; j < suf[i].size() && j < cur.size(); j++) { if(suf[i][suf[i].size() - j - 1] != cur[cur.size() - j - 1]) { break; } } if(j == suf[i].size()) { sufTime++; anspre = anspre + _suf[i]; cur = cur.erase(cur.size() - suf[i].size(), suf[i].size()); _change(); } } if(preTime < 1 && cur.size() >= 2 && cur[0] == 'r' && cur[1] == 'e') { anssuf = " again" + anssuf; preTime++; cur.erase(0, 2); _change(); } if(sufTime < 1 && cur.size() >= 2 && cur[cur.size() - 1] == 'r' && cur[cur.size() - 2] == 'e') { anspre = anspre + "one who "; anssuf = "s" + anssuf; sufTime++; cur.erase(cur.size() - 2, 2); _change(); } if(sufTime < 1 && cur.size() >= 4 && cur.substr(cur.size() - 4, 4) == "tion") { anspre = anspre + "the process of "; anssuf = "ing" + anssuf; sufTime++; cur.erase(cur.size() - 4, 4); _change(); } } int main() { //freopen("1.txt", "r", stdin); int t; cin >> t; while(t--) { cin >> cur; anspre = anssuf = ""; preTime = 0; sufTime = 0; v.clear(); _change(); cout << anspre << cur << anssuf << endl; } return 0; } 

    最新回复(0)