模拟
先打个表… 然后输入时查表
C++ 代码
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
typedef long long LL;
const int N = 200010;
char str[15];
char s[15];
char name[10][10];
void init( ) {
for ( int i = 0; i < 8; i++ ) name[i][0] = '0' + i + 2;
name[0][1] = 'A', name[0][2] = 'B' , name[0][3] = 'C';
name[1][1] = 'D', name[1][2] = 'E' , name[1][3] = 'F';
name[2][1] = 'G', name[2][2] = 'H' , name[2][3] = 'I';
name[3][1] = 'J', name[3][2] = 'K' , name[3][3] = 'L';
name[4][1] = 'M', name[4][2] = 'N' , name[4][3] = 'O';
name[5][1] = 'P', name[5][2] = 'R' , name[5][3] = 'S';
name[6][1] = 'T', name[6][2] = 'U' , name[6][3] = 'V';
name[7][1] = 'W', name[7][2] = 'X' , name[7][3] = 'Y';
}
int main( ) {
cin >> str;
int len = strlen(str);
init();
bool flag = false;
while( scanf("%s", s) != EOF ) {
int cnt = 0;
int t = strlen(s);
if( t != len ) continue; // 长度必须一样
for ( int i = 0; s[i]; i++ ) {
for ( int j = 0; j < 8; j++ ) {
for ( int k = 0; k < 3; k++ ) {
if( name[j][k] == s[i] ) {
if( name[j][0] == str[i] ) {
cnt++;
}
}
}
}
}
if( cnt == len ) {
cout << s << endl;
flag = true;
}
}
if( !flag ) puts("NONE");
return 0;
}