链接:http://118.190.20.162/view.page?gpid=T71
思路: 按要求顺序写出n、m、p[i]、r[i]
接着每次输入一行匹配
将匹配的两个字符串进行切割,存入数组,逐一比对,符合要求就输出
题目本身不难吧,觉得复杂,不敢做,一点一点想清楚也挺舒服的,具体看代码吧,写了注释
#include#include #include #include #include #include using namespace std; string p[150],r[150]; void split(vector &v, string s) { //cout<<"s:"< <::iterator it=v.begin();it!=v.end();it++) // cout<<*it< '9') { t=1; break; } } if(t==1) return " "; else return " "; } vector ans; bool match(string s1,string s2)//s1是规则,s2是要对比的 { ans.clear();//每次将存储答案的数组清零 vector r1,m1; int l=1; split(r1,s1);//切割字符串 split(m1,s2);//r1是规则,m1是查询字符串数组 //cout< < < < m1.size())// return false; if(r1.size() =1) if(r1[r1.size()-1]!=" ") return false; if(r1.size()==0&&m1.size()!=0) return false; for(int i=0;i ") { ans.push_back(s2.substr(l,s2.size()-l)); return true; } else if(r1[i]==judge(m1[i])) { ans.push_back(m1[i]); l=l+m1[i].size()+1; } else return false; } if(s1[s1.size()-1]=='/'&&s2[s2.size()-1]!='/') return false; if(s1[s1.size()-1]!='/'&&s2[s2.size()-1]=='/') return false; return true; } int convert(string s) { int ans=0; for(int i=0;i >p[i]>>r[i]; } for(int i=0;i >s; int flag=0; int j; for(j=0;j ") cout<<" "<