题目描述

给一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.

【搜索】单词方阵 luogu-1101的更多相关文章

  1. 洛谷 P1101 单词方阵

    题目链接 https://www.luogu.org/problemnew/show/P1101 题目描述 给一n×n的字母方阵,内可能蕴含多个"yizhong"单词.单词在方阵中 ...

  2. 【LeetCode每天一题】Word Search(搜索单词)

    Given a 2D board and a word, find if the word exists in the grid.The word can be constructed from le ...

  3. Leetcode 211.添加与搜索单词

    添加与搜索单词 设计一个支持以下两种操作的数据结构: void addWord(word) bool search(word) search(word) 可以搜索文字或正则表达式字符串,字符串只包含字 ...

  4. Java实现 LeetCode 211 添加与搜索单词 - 数据结构设计

    211. 添加与搜索单词 - 数据结构设计 设计一个支持以下两种操作的数据结构: void addWord(word) bool search(word) search(word) 可以搜索文字或正则 ...

  5. 【LeetCode】211. Add and Search Word - Data structure design 添加与搜索单词 - 数据结构设计

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:Leetcode, 力扣,211,搜索单词,前缀树,字典树 ...

  6. luogu p1101 单词方阵

    https://www.luogu.org/problem/show?pid=1101 很恶心的代码  就是八个方向都搜索 #include<bits/stdc++.h> using na ...

  7. 搜索--P1101 单词方阵

    题目描述 给一n×n的字母方阵,内可能蕴含多个"yizhong"单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着 8 个方向的任一方向,同一单词摆放时不再改变方向,单词与单词 ...

  8. 洛谷1101:单词方阵(DFS)

    题目描述 给一n×nn \times nn×n的字母方阵,内可能蕴含多个"yizhong"单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着888个方向的任一方向,同一单词摆放 ...

  9. 洛谷——P1101 单词方阵

    https://www.luogu.org/problem/show?pid=1101#sub 题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放 ...

随机推荐

  1. springmvc——mvc:annotation-driven标签的作用

  2. QT Dialog模态与非模态

    模态 // 创建对话框窗口 TestDialog* dlg = new TestDialog(this); // 阻塞程序的运行 dlg->exec(); 这样的话,当运行对话窗口的时候,会阻塞 ...

  3. pytest初始化与清除fixture(二)

    @pytest.fixture用法 1.导入pytest模块:import pytest 2.调用装饰器函数:@pytest.fixture(callable_or_scope=None,*args, ...

  4. 【NX二次开发】Block UI 字符串

    属性说明:     BlockID     String 控件ID     Enable     Logical 是否可操作     Group     Logical 是否分组     Label  ...

  5. 【VBA】显示所有隐藏的名称管理器中的名称

    Excel提示这个 代码: Sub DisplayNames() Dim Na As Name For Each Na In ThisWorkbook.Names Na.Visible = True ...

  6. 03 jumpserver用户管理

    3.用户管理: (1)创建用户组: (2)创建用户并加入组: (3)用户通过邮件链接修改密码:

  7. 12、elk的使用(2)

    12.8.收集日志: 因为logstash安装在从节点上,所以这里收集的主要是从节点上的服务日志: 1.收集系统日志: (1)配置文件: vim /etc/logstash/conf.d/system ...

  8. 面试:MyBatis面试总结

    1.什么是Mybatis? (1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动.创建连接.创建statement ...

  9. spring data jpa执行update和delete语句时报错处理

    之前项目中使用spring data jpa时,遇到删除记录的需求时,主要利用spring data中自带的delete()方法处理,最近在dao层使用delete sql语句时报错,代码如下: @Q ...

  10. nohup &的用法、进程查看以及终止

    p.p1 { margin: 0 0 2px; font: 16px ".PingFang SC" } p.p2 { margin: 0; font: 12px "Hel ...