【 OJ 】 HDOJ1039 18年11月17日19:40 [ 36 ]
阿新 • • 發佈:2018-12-02
ummm.....這題也是泡泡水題....判斷有點煩
AC程式碼:
# include<iostream> # include <string> using namespace std; char v[5] = { 'a', 'e', 'i', 'o', 'u' };// 母音'a', 'e', 'i', 'o', and 'u'; //規則 1 至少一個母音 2 不能出現連續3個母音3個子音 4 不能出現2個連續的相同字母 除了 ee oo void out(string &str, bool isok) { if (isok) { cout << "<" << str << ">" << " is acceptable." << endl; } else { cout << "<" << str << ">" << " is not acceptable." << endl; } } bool IsOk(string&str) { bool vv=false; int vn, cn, cl; char pre='1'; int i,j; bool isv; vn = cn = 0; for (i = 0; i < str.length(); ++i) { isv = false; if (str[i] == pre) {//查連續的 if (str[i] == 'e' || str[i] == 'o') //ee oo 合法 ;//do nothing else return false; } for (j = 0; j < 5; ++j) { if (str[i] == v[j]) { vv = true;//判全域性 isv = true;//判當前數是否為母音 cn = 0;//子音個數重置 vv++; vn++; if (vn == 3) return false; break; } } if (!isv) {//是子音 vn = 0;//母音個數重置 cn++; if (cn == 3) { return false; } } pre = str[i]; } if (vv) return true; else return false; } int main(void) { string letter; cin >> letter; while (strcmp(letter.c_str(),"end")) { out(letter, IsOk(letter)); cin >> letter; } system("pause"); return 0; }