【搜索】单词方阵 luogu-1101
题目描述
给一n×n的字母方阵,内可能蕴含多个“yizhong”单词。单词在方阵中是沿着同一方向连续摆放的。摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间可以交叉,因此有可能共用字母。输出时,将不是单词的字母用*代替,以突出显示单词。例如:
输入:
8 输出:
qyizhong yizhong
gydthkjy gy*****
nwidghji ni*****
orbzsfgz oz***
hhgrhwth hh**
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的更多相关文章
- 洛谷 P1101 单词方阵
题目链接 https://www.luogu.org/problemnew/show/P1101 题目描述 给一n×n的字母方阵,内可能蕴含多个"yizhong"单词.单词在方阵中 ...
- 【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 ...
- Leetcode 211.添加与搜索单词
添加与搜索单词 设计一个支持以下两种操作的数据结构: void addWord(word) bool search(word) search(word) 可以搜索文字或正则表达式字符串,字符串只包含字 ...
- Java实现 LeetCode 211 添加与搜索单词 - 数据结构设计
211. 添加与搜索单词 - 数据结构设计 设计一个支持以下两种操作的数据结构: void addWord(word) bool search(word) search(word) 可以搜索文字或正则 ...
- 【LeetCode】211. Add and Search Word - Data structure design 添加与搜索单词 - 数据结构设计
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:Leetcode, 力扣,211,搜索单词,前缀树,字典树 ...
- luogu p1101 单词方阵
https://www.luogu.org/problem/show?pid=1101 很恶心的代码 就是八个方向都搜索 #include<bits/stdc++.h> using na ...
- 搜索--P1101 单词方阵
题目描述 给一n×n的字母方阵,内可能蕴含多个"yizhong"单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着 8 个方向的任一方向,同一单词摆放时不再改变方向,单词与单词 ...
- 洛谷1101:单词方阵(DFS)
题目描述 给一n×nn \times nn×n的字母方阵,内可能蕴含多个"yizhong"单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着888个方向的任一方向,同一单词摆放 ...
- 洛谷——P1101 单词方阵
https://www.luogu.org/problem/show?pid=1101#sub 题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放 ...
随机推荐
- springmvc——mvc:annotation-driven标签的作用
- QT Dialog模态与非模态
模态 // 创建对话框窗口 TestDialog* dlg = new TestDialog(this); // 阻塞程序的运行 dlg->exec(); 这样的话,当运行对话窗口的时候,会阻塞 ...
- pytest初始化与清除fixture(二)
@pytest.fixture用法 1.导入pytest模块:import pytest 2.调用装饰器函数:@pytest.fixture(callable_or_scope=None,*args, ...
- 【NX二次开发】Block UI 字符串
属性说明: BlockID String 控件ID Enable Logical 是否可操作 Group Logical 是否分组 Label ...
- 【VBA】显示所有隐藏的名称管理器中的名称
Excel提示这个 代码: Sub DisplayNames() Dim Na As Name For Each Na In ThisWorkbook.Names Na.Visible = True ...
- 03 jumpserver用户管理
3.用户管理: (1)创建用户组: (2)创建用户并加入组: (3)用户通过邮件链接修改密码:
- 12、elk的使用(2)
12.8.收集日志: 因为logstash安装在从节点上,所以这里收集的主要是从节点上的服务日志: 1.收集系统日志: (1)配置文件: vim /etc/logstash/conf.d/system ...
- 面试:MyBatis面试总结
1.什么是Mybatis? (1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动.创建连接.创建statement ...
- spring data jpa执行update和delete语句时报错处理
之前项目中使用spring data jpa时,遇到删除记录的需求时,主要利用spring data中自带的delete()方法处理,最近在dao层使用delete sql语句时报错,代码如下: @Q ...
- nohup &的用法、进程查看以及终止
p.p1 { margin: 0 0 2px; font: 16px ".PingFang SC" } p.p2 { margin: 0; font: 12px "Hel ...