话说10010是联通的客服电话。。这道题就是一个基础的字符串匹配,最后格式输出不正确总是we,郁闷,还好在睡觉前A了
该睡了,代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char tbs[56][56];
char ts[56];
int m, n;
int a, b;
int chr_s(char* s, int bg, int en){
int i, j, len;
int lens = strlen(s);
len = 0; i = bg; j = en;
while(s[len] == tbs[i][j] && tbs[i][j]){
len++;
j++;
}
if(len == lens){
if(bg < a){
a = bg;
b = en;
}
else if(bg == a){
if(en < b){
a = bg;
b = en;
}
}
}
len = 0; i = bg; j = en;
while(s[len] == tbs[i][j] && tbs[i][j]){
len++;
i++;
}
if(len == lens){
if(bg < a){
a = bg;
b = en;
}
else if(bg == a){
if(en < b){
a = bg;
b = en;
}
}
}
len = 0; i = bg; j = en;
while(s[len] == tbs[i][j] && tbs[i][j]){
len++;
i++;
j++;
}
if(len == lens){
if(bg < a){
a = bg;
b = en;
}
else if(bg == a){
if(en < b){
a = bg;
b = en;
}
}
}
len = 0; i = bg; j = en;
while(s[len] == tbs[i][j] && tbs[i][j]){
len++;
i--;
}
if(len == lens){
if(bg < a){
a = bg;
b = en;
}
else if(bg == a){
if(en < b){
a = bg;
b = en;
}
}
}
len = 0; i = bg; j = en;
while(s[len] == tbs[i][j] && tbs[i][j]){
len++;
j--;
}
if(len == lens){
if(bg < a){
a = bg;
b = en;
}
else if(bg == a){
if(en < b){
a = bg;
b = en;
}
}
}
len = 0; i = bg; j = en;
while(s[len] == tbs[i][j] && tbs[i][j]){
len++;
i--;
j--;
}
if(len == lens){
if(bg < a){
a = bg;
b = en;
}
else if(bg == a){
if(en < b){
a = bg;
b = en;
}
}
}
len = 0; i = bg; j = en;
while(s[len] == tbs[i][j] && tbs[i][j]){
len++;
i++;
j--;
}
if(len == lens){
if(bg < a){
a = bg;
b = en;
}
else if(bg == a){
if(en < b){
a = bg;
b = en;
}
}
}
len = 0; i = bg; j = en;
while(s[len] == tbs[i][j] && tbs[i][j]){
len++;
i--;
j++;
}
if(len == lens){
if(bg < a){
a = bg;
b = en;
}
else if(bg == a){
if(en < b){
a = bg;
b = en;
}
}
}
return 0;
}
int tosh(char* s){
int i, j;
for(i = 1; i <= m; ++i){
for(j = 1; j <= n; ++j){
if(tbs[i][j] == s[0]) {
chr_s(s, i, j);
}
}
}
return 0;
}
int main(){
int k;
int ti;
int i, j;
int tag = 0;
scanf("%d", &ti);
while(ti--){
if(tag == 0) tag = 1;
else printf("\n");
memset(tbs, 0, sizeof(tbs));
memset(ts, 0, sizeof(ts));
scanf("%d%d", &m, &n);
for(i = 1; i <= m; i++){
getchar();
for(j = 1; j <= n; j++){
scanf("%c", &tbs[i][j]);
if(tbs[i][j] >= 'A' && tbs[i][j] <='Z')
tbs[i][j] = tbs[i][j] - 'A' + 'a';
}
}
scanf("%d", &k);
for(i = 0; i < k; ++i){
a = 100;
b = 100;
scanf("%s", ts);
for(j = 0; j < strlen(ts); ++j){
if(ts[j] >= 'A' && ts[j] <='Z')
ts[j] = ts[j] - 'A' + 'a';
}
tosh(ts);
printf("%d %d\n", a, b);
}
}
return 0;
}