题解 P4470 【[BJWC2018]售票】

Tomone

2018-04-24 18:00:39

Solution

简单的模拟,注意,千万别开ios的那个同步,全WA ```cpp #include<cstdio> #include<iostream> #include<algorithm> #include<cstdlib> #include<string> #include<cstring> using namespace std; const int maxn(55); string tmp[maxn]; string a[4]={ "***ABCDE", "FGHIJKLM", "NOPQRSTU", "VWXYZ***", }; bool vis[4][9]={0}; //标记 string temp; inline void work(char); inline void print(void); int main(){ //ios::sync_with_stdio(false); 别开这个 int n; scanf("%d",&n); for(int i=0;i<n;++i){ cin>>tmp[i]; transform(tmp[i].begin(),tmp[i].end(),tmp[i].begin(),::toupper); //转换成大写 } cin>>temp; transform(temp.begin(),temp.end(),temp.begin(),::toupper);//转换成大写 int len=temp.length(); for(int i=0;i<n;++i){ string t=tmp[i].substr(0,len); //截取字符串 if(t!=temp) continue; //如果不相等的话就不进行判断 else { char c=tmp[i][len]; work(c); } } print(); return 0; } inline void work(char c){ for(int i=0;i<4;++i){ for(int j=0;j<8;++j){ if(a[i][j]==c){ vis[i][j]=1; //标记 break; } } } } inline void print(void){ for(int i=0;i<4;++i){ for(int j=0;j<8;++j){ if(vis[i][j]==true) cout<<a[i][j]; //如果被标记就输出 else cout<<"*"; //否则输出* } cout<<endl; //换行 } } ``` 小博客:aptx.xin,cokemine.com Welcome