leetcode写久了有点累,换个ACM来写一下~
#include#include #include using namespace std; string s; string s1 = "reset"; string c1 = "board"; string c2 = "backplane"; string s2 = "board"; string s3 = "reboot"; string s4= "backplane"; string d1 = "add"; string d2 = "delete"; string d3 = "abort"; int main() { while (getline(cin, s)) { if (s[0] == 'r') { if (s.find(' ') != -1)//两个字符 { string front_s = s.substr(0, s.find(' ')); string back_s = s.substr(s.find(' ') + 1, s.size() - s.find(' ') - 1); bool flag1 = false; bool flag2 = false; bool flag3 = false; bool flag4 = false; if (s1.find(front_s) != -1)flag1 = true; if (s3.find(front_s) != -1)flag2 = true; if (flag1 && !flag2) { for (int i = 0; i < back_s.size(); i++) { if (back_s[i] == c1[i])flag3 = true; else { flag3 = false; break; } } if (flag3)//1.两个都匹配成功 cout << "board fault" << endl; else //2.第一个匹配成功,第二个匹配不成功 cout << "unknown command" << endl; } else if (!flag1 && flag2) { for (int i = 0; i < back_s.size(); i++) { if (back_s[i] == c2[i])flag4 = true; else { flag4 = false; break; } } if(flag4)//1.两个都匹配成功 cout << "impossible" << endl; else //2.第一个匹配成功,第二个匹配不成功 cout << "unknown command" << endl; } //3.第一个匹配不成功 //4.两个匹配重复 else cout << "unknown command" << endl; } else //一个字符 { if (s == "reb") cout << "unknown command" << endl; else if (s1.find(s) != -1) cout << "reset what" << endl; else if (s3.find(s) != -1) cout << "impossible" << endl; } } else if (s[0] == 'b') { if (s.find(' ') != -1)//两个字符 { string front_s = s.substr(0, s.find(' ')); string back_s = s.substr(s.find(' ') + 1, s.size() - s.find(' ') - 1); bool flag1 = false; bool flag2 = false; bool flag3 = false; bool flag4 = false; bool flag5 = false; if (s2.find(front_s) != -1)flag1 = true; if (s4.find(front_s) != -1)flag2 = true; if (flag1 && !flag2) { for (int i = 0; i < back_s.size(); i++) { if (back_s[i] == d1[i])flag3 = true; else { flag3 = false; break; } } if(flag3)//1.两个都匹配成功 cout << "where to add" << endl; else { for (int i = 0; i < back_s.size(); i++) { if (back_s[i] == d2[i])flag4 = true; else { flag4 = false; break; } } if(flag4)//1.两个都匹配成功 cout << "no board at all" << endl; else//2.第一个匹配成功,第二个匹配不成功 cout << "unknown command" << endl; } } else if (!flag1 && flag2) { for (int i = 0; i < back_s.size(); i++) { if (back_s[i] == d3[i])flag5 = true; else flag5 = false; } if (flag5)//1.两个都匹配成功 cout << "install first" << endl; else//2.第一个匹配成功,第二个匹配不成功 cout << "unknown command" << endl; } //3.第一个匹配不成功 //4.两个匹配重复 else cout << "unknown command" << endl; } else //一个字符 { if (s4.find(s) != -1&&s2.find(s)==-1) cout << "install first" << endl; else cout << "unknown command" << endl; } } else cout << "unknown command" << endl; } return 0; }
题目理解了就不难,就是写起来麻烦~



