zoukankan      html  css  js  c++  java
  • P1101 单词方阵 简单dfs

      

    题目描述

    给一n imes nn×n的字母方阵,内可能蕴含多个“yizhong”单词。单词在方阵中是沿着同一方向连续摆放的。摆放可沿着 88 个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间可以交叉,因此有可能共用字母。输出时,将不是单词的字母用*代替,以突出显示单词。例如:

    输入:
        8                     输出:
        qyizhong              *yizhong
        gydthkjy              gy******
        nwidghji              n*i*****
        orbzsfgz              o**z****
        hhgrhwth              h***h***
        zzzzzozo              z****o**
        iwdfrgng              i*****n*
        yyyygggg              y******g

    输入输出格式

    输入格式:

    第一行输入一个数nn。(7 le n le 1007n100)。

    第二行开始输入n imes nn×n的字母矩阵。

    输出格式:

    突出显示单词的n imes nn×n矩阵。

    输入输出样例

    输入样例#1: 复制
    7
    aaaaaaa
    aaaaaaa
    aaaaaaa
    aaaaaaa
    aaaaaaa
    aaaaaaa
    aaaaaaa
    
    输出样例#1: 复制
    *******
    *******
    *******
    *******
    *******
    *******
    *******
    
    输入样例#2: 复制
    8
    qyizhong
    gydthkjy
    nwidghji
    orbzsfgz
    hhgrhwth
    zzzzzozo
    iwdfrgng
    yyyygggg
    输出样例#2: 复制
    *yizhong
    gy******
    n*i*****
    o**z****
    h***h***
    z****o**
    i*****n*
    y******g



    #include<bits/stdc++.h>
    using namespace std;
    //input by bxd
    #define rep(i,a,b) for(int i=(a);i<=(b);i++)
    #define repp(i,a,b) for(int i=(a);i>=(b);i--)
    #define RI(n) scanf("%d",&(n))
    #define RII(n,m) scanf("%d%d",&n,&m)
    #define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
    #define RS(s) scanf("%s",s);
    #define LL long long
    #define pb push_back
    #define fi first
    #define REP(i,N)  for(int i=0;i<(N);i++)
    #define CLR(A,v)  memset(A,v,sizeof A)
    ///////////////////////////////////
    #define inf 0x3f3f3f3f
    #define N 1000
    int n;
    char mp[N][N];
    char str[8]="yizhong";
    int vis[N][N];
    int dx[8]={0,0,-1,1,1,1,-1,-1};
    int dy[8]={1,-1,0,0,1,-1,1,-1};
    void dfs(int x,int y,int k)
    {
        int ok=1;
        rep(i,1,6)
        {
            x+=dx[k];
            y+=dy[k];
            if(mp[x][y]!=str[i]){ok=0;break;}
        }
        if(ok)
        {
            while(mp[x][y]!='y')
            {
                vis[x][y]=1;
                x-=dx[k];
                y-=dy[k];
            }
            vis[x][y]=1;
        }
    }
    
    int main()
    {
        RI(n);
        rep(i,1,n)
        RS(mp[i]+1);
        rep(i,1,n)
        rep(j,1,n)
        if(mp[i][j]=='y')
        rep(k,0,7)
        dfs(i,j,k);
        rep(i,1,n)
        {
            rep(j,1,n)
            if(!vis[i][j])printf("*");
            else printf("%c",mp[i][j]);
            cout<<endl;
        }
        return 0;
    }
  • 相关阅读:
    【Docker】-NO.131.Docker.1 -【Docker】
    【HBase】-NO.140.HBase.1 -【HBase】
    【Vagrant】-NO.130.Vagrant.1 -【Vagrant】
    【技巧】-NO.123.数据处理技巧
    【Common】-NO.122.common.1
    【心得】-NO.114.面试.1 -【To HR And Interviewer】
    【JVM】-NO.113.JVM.1 -【JDK11 HashMap详解-4-resize()】
    【JVM】-NO.114.JVM.1 -【JDK11 HashMap详解-3-put-treeifyBin()-AVL】
    【JVM】-NO.115.JVM.1 -【JDK11 HashMap详解-4-伸展树、B树】
    【JVM】-NO.116.JVM.1 -【JDK11 HashMap详解-5-红黑树】
  • 原文地址:https://www.cnblogs.com/bxd123/p/10614331.html
Copyright © 2011-2022 走看看