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.
    
    黎明的朝阳,会为苦难中最坚强的信念升起
  • 相关阅读:
    简单的描述Java中的构造函数,及访问修饰符
    MyEclipse中常用的快捷键大全,快来.....
    转:攻击JavaWeb应用[1]-javaEE基础
    转:vscode中调试php
    转:java-Servlet开发
    转:Spring学习笔记---Spring Security登录页
    实战栈溢出:三个漏洞搞定一台路由器(转自长亭科技)
    gdbserver静态编译
    gdb调试若干问题
    转:Apache+Fastcgi+Django
  • 原文地址:https://www.cnblogs.com/Dawn-Star/p/9685764.html
Copyright © 2011-2022 走看看