Sicily 1252 Defining Moment(字串遞迴)

來源:互聯網
上載者:User

//類比題,遞迴處理即可,利用string 類強大的可+性,可簡單實現遞迴函式<br />//一開始調用了STL的string類的substr函數,結果restric function了<br />//真是無語。。。<br />#include<iostream><br />#include<string><br />using namespace std;<br />string Substr(string word,int position,int len)<br />{<br />string substr;<br />for(int i = position;i - position < len;++i)<br />{<br />if(i == word.size())break;<br />substr.push_back(word[i]);<br />}<br />return substr;<br />}<br />string findPrefix(string word)//找首碼<br />{<br />string Empty;<br />if(Substr(word,0,2) == "re")return "re";<br />else if(Substr(word,0,2) == "un")return "un";<br />else if(Substr(word,0,3) == "pre")return "pre";<br />else if(Substr(word,0,4) == "anti")return "anti";<br />else if(Substr(word,0,4) == "post")return "post";<br />else return Empty;<br />}<br />string findSuffix(string word)//找尾碼<br />{<br />string Empty;<br />int len = word.size();<br />if(Substr(word,len - 1,1) == "s")return "s";<br />else if(Substr(word,len - 2,2) == "er")return "er";<br />else if(Substr(word,len - 3,3) == "ize")return "ize";<br />else if(Substr(word,len - 3,3) == "ing")return "ing";<br />else if(Substr(word,len - 4,4) == "tion")return "tion";<br />else return Empty;<br />}</p><p>string findMiddle(string word)//找中間<br />{<br />string prefix = findPrefix(word);<br />string suffix = findSuffix(word);<br />string middle;<br />for(int i = prefix.size();i < word.size() - suffix.size();++i)<br />middle.push_back(word[i]);<br />return middle;<br />}<br />string postMeaning(string prefix,string middle,string suffix)<br />{<br />if(suffix == "er")<br />return "one who " + middle + "s";<br />else if(suffix == "ing")<br />return "to actively " + middle;<br />else if(suffix == "ize")<br />return "change into " + middle;<br />else if(suffix == "s")<br />return "multiple instances of " + middle;<br />else if(suffix == "tion")<br />return "the process of " + middle + "ing";<br />else return middle;<br />}<br />string preMeaning(string prefix,string middle,string suffix)<br />{<br />if(prefix == "anti")<br />return "against " + postMeaning(prefix,middle,suffix);<br />else if(prefix == "post")<br />return "after " + postMeaning(prefix,middle,suffix);<br />else if(prefix == "pre")<br />return "before " + postMeaning(prefix,middle,suffix);<br />else if(prefix == "re")<br />return postMeaning(prefix,middle,suffix) + " again";<br />else if(prefix == "un")<br />return "not " + postMeaning(prefix,middle,suffix);<br />else return postMeaning(prefix,middle,suffix);<br />}<br />int main()<br />{</p><p>//freopen("in.txt","r",stdin);<br />string str;<br />int n;<br />cin >> n;<br />while(n--)<br />{<br />cin >> str;<br />string prefix = findPrefix(str);<br />string suffix = findSuffix(str);<br />string middle = findMiddle(str);<br />cout << preMeaning(prefix,middle,suffix) << endl;<br />}<br />return 0;<br />} 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.