[csp-201509-3]模板生成系统
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 const int N=110; 5 string a[N],b[N],c[N]; 6 7 int main() 8 { 9 //freopen("a.in","r",stdin); 10 int n,m; 11 scanf("%d%d",&n,&m);getline(cin,a[0]); 12 for(int i=1;i<=n;i++) getline(cin,a[i]); 13 string s; 14 for(int i=1;i<=m;i++) 15 { 16 getline(cin,s); 17 int j=0; 18 b[i]="{{ "; 19 for(j=0;j<s.size();j++) 20 { 21 if(s[j]==' ') {j+=2;break;} 22 b[i]+=s[j]; 23 } 24 b[i]+=" }}"; 25 c[i]=""; 26 for(;j<s.size()-1;j++) c[i]+=s[j]; 27 } 28 // for(int i=1;i<=n;i++) 29 // cout << b[i] << ' ' << c[i] << endl; 30 for(int i=1;i<=n;i++) 31 { 32 string token=""; 33 for(int j=0;j<a[i].size();j++) 34 { 35 bool ok=0; 36 if(j+1<a[i].size() && a[i][j]=='{' && a[i][j+1]=='{') 37 { 38 for(int k=1;k<=m;k++) 39 { 40 if(a[i].compare(j,b[k].size(),b[k])==0) 41 { 42 ok=1; 43 j+=b[k].size()-1; 44 token+=c[k]; 45 break; 46 } 47 } 48 if(!ok) 49 { 50 for(int k=j+3;k<a[i].size();k++) 51 if(a[i][k]=='}' && a[i][k-1]=='}' && a[i][k-2]==' ') {j=k;ok=1;break;} 52 } 53 } 54 if(!ok) token+=a[i][j]; 55 } 56 cout << token << endl; 57 } 58 return 0; 59 }