zoukankan      html  css  js  c++  java
  • uva10010 Where's Waldorf?

    题目链接 :http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=96&page=show_problem&problem=951

    题目大意:给定一个二维字符串数组,找出想要找到的单词

    题目考点:字符串

    解题思路:从原数组中找到第一个匹配字母,然后再从八个方向找

    题目代码

    View Code
      1 // File Name: uva10010.cpp
      2 // Author: darkdream
      3 // Created Time: 2013年01月25日 星期五 09时25分33秒
      4 
      5 #include<vector>
      6 #include<list>
      7 #include<map>
      8 #include<set>
      9 #include<deque>
     10 #include<stack>
     11 #include<bitset>
     12 #include<algorithm>
     13 #include<functional>
     14 #include<numeric>
     15 #include<utility>
     16 #include<sstream>
     17 #include<iostream>
     18 #include<iomanip>
     19 #include<cstdio>
     20 #include<cmath>
     21 #include<cstdlib>
     22 #include<cstring>
     23 #include<ctime>
     24 #include<ctype.h>
     25 
     26 using namespace std;
     27 char a[100][100];
     28 int m , k ;
     29 int find (char b[] , int h , int l )
     30 {
     31    int i , j ,  t =0 , s;
     32    if ( h+1 >= strlen(b) ) 
     33    {
     34       t = 1 ;
     35       i = h ; 
     36       j = l ;
     37       for (s = 1 ; s < strlen(b); s++ )
     38           if (b[s] == a[--i][j])
     39                t = t+1;
     40       if (t == strlen(b))
     41            return 1;
     42    }
     43    if (h+1 >= strlen(b) && l+1 >= strlen(b))
     44    {
     45    
     46       t = 1 ;
     47       i = h ; 
     48       j = l ;
     49       for (s = 1 ; s < strlen(b); s++ )
     50           if (b[s] == a[--i][--j])
     51                t = t+1;
     52       if (t == strlen(b))
     53            return 1;
     54    }
     55    if (l+1 >= strlen(b))
     56    {
     57     
     58       t = 1 ;
     59       i = h ; 
     60       j = l ;
     61       for (s = 1 ; s < strlen(b); s++ )
     62           if (b[s] == a[i][--j])
     63                t = t+1;
     64       if (t == strlen(b))
     65            return 1;
     66    }
     67    if (h +1 >= strlen(b) && k-l+1 >= strlen(b))
     68    {
     69    t = 1 ;
     70    i = h ; 
     71    j = l ;
     72    for (s = 1 ; s < strlen(b); s++ )
     73        if (b[s] == a[--i][++j])
     74             t = t+1;
     75    if (t == strlen(b))
     76         return 1;
     77    
     78    }
     79    if (k-l +1 >= strlen(b))
     80    {
     81    
     82       t = 1 ;
     83       i = h ; 
     84       j = l ;
     85       for (s = 1 ; s < strlen(b); s++ )
     86           if (b[s] == a[i][++j])
     87                t = t+1;
     88       if (t == strlen(b))
     89            return 1;
     90    }
     91   if (m-h+1 >=strlen(b))
     92   {
     93   
     94       t = 1 ;
     95       i = h ; 
     96       j = l ;
     97       for (s = 1 ; s < strlen(b); s++ )
     98           if (b[s] == a[++i][j])
     99                t = t+1;
    100       if (t == strlen(b))
    101            return 1;
    102   }
    103   if (m-h+1 >= strlen(b) &&  h+1 >= strlen(b))
    104   {
    105   
    106       t = 1 ;
    107       i = h ; 
    108       j = l ;
    109       for (s = 1 ; s < strlen(b); s++ )
    110           if (b[s] == a[++i][--j])
    111                t = t+1;
    112       if (t == strlen(b))
    113            return 1;
    114   }
    115   if (m-h+1 >=strlen(b) && k -l +1 >= strlen(b))
    116   {
    117   
    118       t = 1 ;
    119       i = h ; 
    120       j = l ;
    121       for (s = 1 ; s < strlen(b); s++ )
    122           if (b[s] == a[++i][++j])
    123                t = t+1;
    124       if (t == strlen(b))
    125            return 1;
    126   }
    127    return 0;
    128    
    129          
    130 
    131 }
    132 
    133 int main(){
    134       char  b[100][100];
    135       int n,i ;
    136       scanf("%d",&n);
    137       for (i = 1;i <= n;i++)
    138       {  memset(a,0,sizeof(a));
    139          memset(b,0,sizeof(b));
    140         if(i != 1 )
    141             printf("\n");
    142       
    143 
    144         int  j , c, t , p , q  ;
    145         scanf("%d %d",&m ,&k);
    146         getchar();
    147         for (j =0; j < m ; j++)
    148         {    gets(a[j]);
    149            for (t = 0 ;t < k ; t++)
    150                a[j][t]  = toupper(a[j][t]);
    151         }
    152         scanf("%d",&c);
    153         getchar();
    154         for (j = 0 ; j < c ;j++)
    155         {    gets(b[j]);
    156             for (t = 0 ; t < strlen(b[j]); t++)
    157                 b[j][t] = toupper(b[j][t]);
    158          
    159         }
    160         for (j = 0 ; j < c ; j++)
    161         {
    162             for(t = 0 ;t < m ;t++)
    163             {  for (p = 0 ; p < k ; p++)
    164               {
    165                 if (a[t][p] == b[j][0])
    166                     if (find(b[j], t , p))
    167                     {
    168                         printf("%d %d\n",t+1, p+1);
    169                         break;
    170                     }
    171               }
    172               if(find(b[j],t,p))
    173                   break;
    174             }
    175 
    176         }
    177    
    178     
    179         
    180 
    181       }
    182 return 0;
    183 }
  • 相关阅读:
    【从零开始】【Java】【3】改造成多模块项目
    atomic nonatomic区别
    UIBezierPath
    全局块、栈块、堆块
    动态修改可变数组元素
    layoutSubviews
    约束Constraints
    Objective-C实现一个简单的栈
    NSString 使用 copy、strong
    ARC中__weak;__strong;__unsafe_unretained;修饰词
  • 原文地址:https://www.cnblogs.com/zyue/p/2876247.html
Copyright © 2011-2022 走看看