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;
    }

    当你的才华还撑不起你的野心时,那你就应该静下心来学习。
  • 相关阅读:
    LIB和 DLL区别
    C++ STL总结
    浅谈static和extern关系
    死锁及处理
    函数模板与模板函数
    Linux无法启动httpd_正在启动httpd
    httpd不允许远程连接问题
    虚拟机UUIDexist_更改UUID
    MySQL远程连接丢失问题
    Apache服务端允许跨域
  • 原文地址:https://www.cnblogs.com/aceg/p/2513443.html
Copyright © 2011-2022 走看看