这题的主要思想还是 暴力 模拟,加上一点字符串技巧~
有个字符串函数叫做strncmp(我翻了好久的书才翻到,然而写题解前一看,已经有人这么做了QAQ),有三个参数,分别是两个字符数组和一个比较长度,用法是strncmp(char a[],char b[],int l)它是用来比较字符串a和b前l个字符是否相同;
类似于这个:
if(a>b) return 1;
else if(a==b) return 0;
else if(a<b) return -1;
Pascal是这个:
if a>b exit(1)
else if a=b exit(0)
else if a<b exit(-1);
所以,我们只要判断返回值是不是0就行了。
哦,对了,这里还有一个找规律的方法:
对于大写字母c,有
x坐标=(c-65)%8+3;(ord(c)mod 8+3)
y坐标=(c-65)/8;(ord(c) div 8)
这个对于往键盘上填数有帮助。
代码如下
#include<bits/stdc++.h>
using namespace std;
int main()
{
char x[60][200],p[200];
int n;
char ans[4][8];
memset(ans,'*',sizeof(ans));
cin>>n;
for(int i=0;i<n;i++) cin>>x[i];
cin>>p;
int l=strlen(p);
for(int i=0;i<n;i++)
{
if(strncmp(p,x[i],l)==0)
{
int k=x[i][l]-65;
int a=k%8+3;
int b=k/8;
ans[b][a]=x[i][l];
}
}
for(int i=0;i<4;i++)
{
for(int j=0;j<8;j++)
cout<<ans[i][j];
cout<<endl;
}
return 0;
}
代码不长,思路简单,886~