zoukankan      html  css  js  c++  java
  • Uva 10010

    这道题是要找到字符串在字符矩阵里的位置,并输出其头字母的坐标。我们先找到首字母的位置,

    然后按照八个方向当中的一个搜索,如果能找到完整的字符串,就输出坐标。与DFS每个点按照

    八个方向搜索不同的是,这里只是按照一个方向一个方向地搜索。所以搜索函数也稍有不同。

    #include<stdio.h>
    #include<string.h>
    #include <ctype.h>
    const int maxn=60,dx[]= {1,1,1,0,-1,-1,-1,0},dy[]= {-1,0,1,1,1,0,-1,-1};

    char G[maxn][maxn];
    char str[maxn];
    int main()
    {
    int t,n,m,i,j,x,y,count,K,len,k,a=0;
    char ch;
    bool flag;
    scanf("%d",&t);
    while(t--)
    {
    if(a!=0)
    printf("\n");
    a++;
    scanf("%d%d",&n,&m);

    for(i=1;i<=n;i++)
    {
    getchar();
    for(j=1;j<=m;j++)
    {
    scanf("%c",&ch);
    G[i][j]=tolower(ch);
    }

    }

    /*
    for(i=1;i<=n;i++)
    {
    for(j=1;j<=m;j++)
    printf("%c",G[i][j]);
    printf("\n");

    }
    */
    scanf("%d",&K);
    getchar();

    while(K--)
    {
    scanf("%s",&str);

    //printf("%s\n",str);
    len=strlen(str);
    for(i=0;i<len;i++)
    str[i]=tolower(str[i]);
    flag=false;
    for(i=1;i<=n && !flag;i++)
    for(j=1;j<=m && !flag;j++)
    for(k=0;k<8 && !flag;k++)
    {
    x=i;
    y=j;
    count=0;

    while(x>=1 && x<=n && y>=1 && y<=m && count<len && str[count]==G[x][y])
    {
    ++count;
    x+=dx[k];
    y+=dy[k];

    }
    if(count==len)
    {
    flag=true;
    printf("%d %d\n",i,j);


    }


    }


    }


    }
    return 0;
    }

    当你的才华还撑不起你的野心时,那你就应该静下心来学习。
  • 相关阅读:
    nhibernate记事
    关于mysql数据库中,连续签到等连续日期的处理
    记IIS部署https arr urlrewrite
    mybatis Generator
    CGI
    FreedonStudio freertos 内存分配方式选择
    NB模块BC26调试记录
    调试升级程序记录
    最近做的一个嵌入式项目
    4*4键盘扫描程序--去抖加长按
  • 原文地址:https://www.cnblogs.com/aceg/p/2513443.html
Copyright © 2011-2022 走看看