题解 P4470 【[BJWC2018]售票】

2018-04-24 18:00:39


简单的模拟,注意,千万别开ios的那个同步,全WA

#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