题目一如既往的冗长~
这一题小菜鸡我一直没有过,后来是在网上模仿大佬思路写的。
仍然是信息的提取,但有坑!!具体的,代码注释上有:
#includeusing namespace std;string Rules[100],Name[100];void GetInfo(vector &v,string s)//去'/'取信息 { v.clear(); string temp; for(size_t i=1;i '9'){ return " "; } } return " ";}vector Answer;//存答案 bool Judge(string s,string rules)//所有否定情况都举出,都不符,则真 { Answer.clear();//现将Answer 初始化 vector ju1,ru2; int count=1; //辅助读取 GetInfo(ju1,s); GetInfo(ru2,rules); if(ru2.size()>=1) if((ju1.size()>ru2.size()) &&(ru2[ru2.size()-1]!=" ")) { return false; } if(ju1.size() =ru2.size())//大于时,到rule的最后一项必然会有不同 { for(size_t i=0;i "){ //非 Answer.push_back(s.substr(count));//一直读到最后 }//还不能判断是否可以,因为还有末尾的'/' else { return false; } } }//提取信息时,去掉了'/',所以判断时要注意末尾的'/' 很坑呐,因为末尾都可以是'/' 。坑啊啊啊啊!! if(s[s.size()-1]=='/'&&rules[rules.size()-1]!='/'){ return false; } if(s[s.size()-1]!='/'&&rules[rules.size()-1]=='/'){ return false; } // return true; //终极真!!! } int Str_to_Num(string str)//转换为整型,去掉前导零 { int num=0; for(size_t i=0;i >n>>m; int i=0; for(i=0;i >Rules[i]>>Name[i]; } while(m--) { string s; cin>>s; bool flag=false; for(i=0;i ") { cout<<' '; cout< <<' '; } else{ cout<<' '; cout<