zoukankan      html  css  js  c++  java
  • 【搜索】单词方阵 luogu-1101

    题目描述

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

    输入:
    8 输出:
    qyizhong yizhong
    gydthkjy gy
    *****
    nwidghji ni*****
    orbzsfgz oz
    ***
    hhgrhwth h
    h**
    zzzzzozo zo**
    iwdfrgng i*****n

    yyyygggg y
    ***g

    分析

    dfs,在过程中顺便就记录当前是否是合法的,看了代码就知道什么意思了。

    AC代码

    const 
      dx:array[1..8] of longint=(0,1,0,-1,1,1,-1,-1);
      dy:array[1..8] of longint=(1,0,-1,0,1,-1,1,-1);
      st:string='yizhong';
    
    var
      n,i,j,k,ii,jj:longint;
      vis,flag:array[1..100,1..100]of boolean;
      m:array[1..100,1..100]of char;
      fg:boolean;
      
    procedure dfs(x,y,k,sum:longint);
    var
      i:longint;
    begin
      if sum=8 then 
        begin
          fg:=true;
          exit;
        end;
      if (x<1)or(x>n)or(y<1)or(y>n)then exit;
      if (m[x][y]=st[sum]) then  
        begin
          vis[x][y]:=true;
          dfs(x+dx[k],y+dy[k],k,sum+1);
          if(fg=false)and not(flag[x][y]) then vis[x][y]:=false;
        end;
    end;
    
    begin
      readln(n);
      for i:=1 to n do 
        begin 
          for j:=1 to n do begin read(m[i][j]); vis[i][j]:=false; end;
          readln;
        end;
      for i:=1 to n do 
        for j:=1 to n do 
            for k:=1 to 8 do 
              begin 
                fg:=false;
                dfs(i,j,k,1);
                flag:=vis;
              end;
      for i:=1 to n do 
        begin
          for j:=1 to n do 
            if not(vis[i][j]) then write('*')
              else write(m[i][j]);
          writeln;
        end;
    end.
    
    黎明的朝阳,会为苦难中最坚强的信念升起
  • 相关阅读:
    [Windows]Windows的访问控制模型
    [C/C++]宽字符与控制台程序
    [SQL Server]自动化附加和分离数据库
    [ASP.NET]自动发送邮件功能的实现
    [Windows]Windows路径探究
    asp.net中怎么样获取前一页地址
    CheckBox全选CheckBoxList
    远程SQL插入数据
    SQL存储过程调用作业的方法
    [转]javascript 调用后台函数
  • 原文地址:https://www.cnblogs.com/Dawn-Star/p/9685764.html
Copyright © 2011-2022 走看看