题解 CF546A 【Soldier and Bananas】

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

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

接下来就很方便了

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#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);//直接输出
}