UVA 之10010 - Where's Waldorf?(二)

2014-11-24 12:20:01 · 作者: · 浏览: 1
artR = i+1;
  • StartC = j+1;
  • }
  • }
  • }
  • //right - left
  • if(j - len + 1>= 0){
  • flag = 0;
  • for(k = 0;k < len;k++){
  • if(str[k] != Matrix[i][j-k]){
  • flag = 1;
  • break;
  • }
  • }
  • if(flag == 0){
  • if(StartR > i+1){
  • StartR = i+1;
  • StartC = j+1;
  • }
  • else if(StartR == i+1 && StartC > j+1){
  • StartR = i+1;
  • StartC = j+1;
  • }
  • }
  • }
  • //up - down
  • if(i + len <= M){
  • flag = 0;
  • for(k = 0;k < len;k++){
  • if(str[k] != Matrix[i+k][j]){
  • flag = 1;
  • break;
  • }
  • }
  • if(flag == 0){
  • if(StartR > i+1){
  • StartR = i+1;
  • StartC = j+1;
  • }
  • else if(StartR == i+1 && StartC > j+1){
  • StartR = i+1;
  • StartC = j+1;
  • }
  • }
  • }
  • //down - up
  • if(i - len + 1 >= 0){
  • flag = 0;
  • for(k = 0;k < len;k++){
  • if(str[k] != Matrix[i-k][j]){
  • flag = 1;
  • break;
  • }
  • }
  • if(flag == 0){
  • if(StartR > i+1){
  • StartR = i+1;
  • StartC = j+1;
  • }
  • else if(StartR == i+1 && StartC > j+1){
  • StartR = i+1;
  • StartC = j+1;
  • }
  • }
  • }
  • //right - up
  • if(j + len <= N && i - len + 1 >= 0){
  • flag = 0;
  • for(k = 0;k < len;k++){
  • if(str[k] != Matrix[i-k][j+k]){
  • flag = 1;
  • break;
  • }
  • }
  • if(flag == 0){
  • if(StartR > i+1){
  • StartR = i+1;
  • StartC = j+1;
  • }
  • else if(StartR == i+1 && StartC > j+1){
  • StartR = i+1;
  • StartC = j+1;
  • }
  • }
  • }
  • //right - down
  • if(j + len <= N && i + len <= M){
  • flag = 0;
  • for(k = 0;k < len;k++){
  • if(str[k] != Matrix[i+k][j+k]){
  • flag = 1;
  • break;
  • }
  • }
  • if(flag == 0){
  • if(StartR > i+1){
  • StartR = i+1;
  • StartC = j+1;
  • }
  • else if(StartR == i+1 && StartC > j+1){
  • StartR = i+1;
  • StartC = j+1;
  • }
  • }
  • }
  • //left - up
  • if(j - len + 1 >= 0 && i - len + 1 >= 0){
  • flag = 0;
  • for(k = 0;k < len;k++){
  • if(str[k] != Matrix[i-k][j-k]){
  • flag = 1;
  • break;
  • }
  • }
  • if(flag == 0){
  • if(StartR > i+1){
  • StartR = i+1;
  • StartC = j+1;
  • }
  • else if(StartR == i+1 && StartC > j+1){
  • StartR = i+1;
  • StartC = j+1;
  • }
  • }
  • }
  • //left - down
  • if(j - len + 1 >= 0 && i + len <= M){
  • flag = 0;
  • for(k = 0;k < len;k++){
  • if(str[k] != Matrix[i-k][j+k]){
  • flag = 1;
  • break;
  • }
  • }
  • if(flag == 0){
  • if(StartR > i+1){
  • StartR = i+1;
  • StartC = j+1;
  • }
  • else if(StartR == i+1 && StartC > j+1){
  • StartR = i+1;
  • StartC = j+1;
  • }
  • }
  • }
  • }//for j
  • }//for i
  • return 0;
  • }
  • int main (){
  • int i,j,Case,k,M,N;
  • //freopen("C:\\Users\\XIAOSI\\Desktop\\acm.txt","r",stdin);
  • while(scanf("%d",&Case) != EOF){
  • while(Case--){
  • scanf("%d %d",&M,&N);
  • //输入字符矩阵
  • for(i = 0;i < M;i++){
  • scanf("%s",temp);
  • for(j = 0;j < N;j++){
  • Matrix[i][j] = temp[j];
  • //转换为小写
  • if(Matrix[i][j] >= 'A' && Matrix[i][j] <= 'Z'){
  • Matrix[i][j] = Matrix[i][j] - 'A' + 'a';
  • }
  • }
  • }
  • scanf("%d",&k);
  • //待匹配串
  • for(i = 0;i < k;i++){
  • scanf("%s",str);
  • int len = strlen(str);
  • //转换为小写
  • for(j = 0;j < len;j++){
  • if(str[j] >= 'A' && str[j] <= 'Z'){
  • str[j] = str[j] - 'A' + 'a';
  • }
  • }
  • //printf("%s",str);
  • Match(M,N,StartR,StartC);
  • printf("%d %d\n",StartR,StartC);
  • }
  • //每组测试之间有空行
  • if(Case){
  • printf("\n");
  • }
  • }
  • }
  • return 0;
  • }