题解 P4470 【[BJWC2018]售票】

· · 题解

抢到全网最优解之后发题解

其实此题有一个很好用的命令:strncmp,可以直接比较两个字符串的前n位

接下来就很方便了

代码:

#include <cstdio>
#include <cstring>
short n,l;
char a[51][101],s[101],k[]={"********\n********\n********\n********"};//省的换行
int main(void){
    scanf ("%d\n",&n);
    for (short i=0;i<n;i++)scanf ("%s\n",&a[i]);
    scanf ("%s",s),l=strlen(s);
    for (short i=0;i<n;i++)if (!strncmp(a[i],s,l)){//比较
        char c=a[i][l];
        if('A'<=c&&c<='E')k[c-'A'+3]=c;
        if('F'<=c&&c<='M')k[c-'A'+4]=c;
        if('N'<=c&&c<='U')k[c-'A'+5]=c;
        if('V'<=c&&c<='Z')k[c-'A'+6]=c;//设置为可见
    }
    puts(k);//直接输出
}