• UVA10010 Where's Waldorf?


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

    就是从每个字符的8个方向循环找是否有跟给出的字符串相等的 找的时候稍微限制一些条件即可 代码有点长

    View Code
      1 #include<stdio.h>
      2 #include<string.h>
      3 int main()
      4 {
      5     int t, n, m, k, y, i, j,f,x,w,v,flag,g,o;
      6     char c[55][55],str[55];
      7     scanf("%d", &t);
      8     while(t--)
      9     {
     10         scanf("%d%d%*c", &n, &m);
     11         for(i = 1 ; i <= n ; i++)
     12         {
     13             for(j = 1 ; j <= m ; j++)
     14                 scanf("%c", &c[i][j]);
     15                 getchar();
     16         }
     17         scanf("%d", &o);
     18         getchar();
     19         while(o--)
     20         {            
     21             gets(str);
     22             k = strlen(str);
     23             for(i = 1 ; i <= n ; i++)
     24             {
     25                 for(j = 1 ; j <= m ; j++)
     26                 {
     27                     w = i;
     28                     v = j;
     29                     flag = 0;
     30                     if(j>=k)
     31                     {
     32                         flag = 1;
     33                         y = j;
     34                         for(g = 0; g < k ; g++)
     35                         {
     36                             if(str[g] != c[i][y]&&(str[g]-c[i][y]!=32&&str[g]-c[i][y]!=-32))
     37                             {
     38                                 flag = 0;
     39                                 break;
     40                             }
     41                             y--;
     42                         }
     43                     }
     44                     
     45                     if(flag == 1)
     46                         break;
     47                     if((j+k-1)<=m)
     48                     {
     49                         flag = 1;
     50                         y = j;
     51                         for(g = 0; g < k ; g++)
     52                         {
     53                             if(str[g] != c[i][y]&&(str[g]-c[i][y]!=32&&str[g]-c[i][y]!=-32))
     54                             {
     55                                 flag = 0;
     56                                 break;
     57                             }
     58                             y++;
     59                         }
     60                     }
     61                     if(flag == 1)
     62                         break;
     63                     
     64                     if(i>=k)
     65                     {
     66                         flag = 1;
     67                         y = i;
     68                         for(g = 0; g < k ; g++)
     69                         {
     70                             if(str[g] != c[y][j]&&(str[g]-c[y][j]!=32&&str[g]-c[y][j]!=-32))
     71                             {
     72                                 flag = 0;
     73                                 break;
     74                             }
     75                             y--;
     76                         }
     77                     }
     78                     if(flag == 1)
     79                         break;
     80                     
     81                     if(i+k-1<=n)
     82                     {
     83                         
     84                         flag = 1;
     85                         y = i;
     86                         for(g = 0; g < k ; g++)
     87                         {
     88                             if(str[g] != c[y][j]&&(str[g]-c[y][j]!=32&&str[g]-c[y][j]!=-32))
     89                             {
     90                                 flag = 0;
     91                                 break;
     92                             }
     93                             y++;
     94                         }
     95                     }
     96                     if(flag == 1)
     97                         break;
     98                     
     99                     if(j>=k&&i>=k)
    100                     {
    101                         flag = 1;
    102                         f = i;
    103                         x = j;
    104                         for(g = 0 ; g < k ; g++)
    105                         {
    106                             if(str[g] != c[f][x]&&(str[g]-c[f][x]!=32&&str[g]-c[f][x]!=-32))
    107                             {
    108                                 flag = 0;
    109                                 break;
    110                             }
    111                             f--;
    112                             x--;
    113                         }
    114                     }
    115                     if(flag == 1)
    116                         break;
    117                     
    118                     if(j+k-1<=m&&i>=k)
    119                     {flag = 1;
    120                         f = i;
    121                         x = j;
    122                         for(g = 0 ; g < k ; g++)
    123                         {
    124                             if(str[g] != c[f][x]&&(str[g]-c[f][x]!=32&&str[g]-c[f][x]!=-32))
    125                             {
    126                                 flag = 0;
    127                                 break;
    128                             }
    129                             f--;
    130                             x++;
    131                         }
    132                     }
    133                     if(flag == 1)
    134                         break;
    135                     
    136                     if(j<=k&&i+k-1<=n)
    137                     {flag = 1;
    138                         f = i;
    139                         x = j;
    140                         for(g = 0 ; g < k ; g++)
    141                         {
    142                             if(str[g] != c[f][x]&&(str[g]-c[f][x]!=32&&str[g]-c[f][x]!=-32))
    143                             {
    144                                 flag = 0;
    145                                 break;
    146                             }
    147                             f++;
    148                             x--;
    149                         }
    150                     }
    151                     if(flag == 1)
    152                         break;
    153                     
    154                     if(j+k-1<=m&&i+k-1<=n)
    155                     {flag = 1;
    156                         f = i;
    157                         x = j;
    158                         for(g = 0 ; g < k ; g++)
    159                         {
    160                             
    161                             if(str[g] != c[f][x]&&(str[g]-c[f][x]!=32&&str[g]-c[f][x]!=-32))
    162                             {
    163                                 flag = 0;
    164                                 break;
    165                             }
    166                             f++;
    167                             x++;
    168                         }
    169                     }
    170                     if(flag == 1)
    171                         break;
    172                 }
    173                 if(flag == 1)
    174                     break;
    175             }
    176             
    177             printf("%d %d\n",w,v); 
    178         }
    179         if(t!=0)
    180             puts("");
    181     }
    182     return 0;
    183 }
  • 相关阅读:
    cygwin mysql forget root password
    emacs 复制粘贴的正确姿势
    yarn
    mysql 和 postgresql 区别
    hdfs
    spark
    hbase
    kafka
    flume
    java jar
  • 原文地址:https://www.cnblogs.com/shangyu/p/2519114.html
Copyright © 2020-2023  润新知