题目描述

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

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

输入输出格式

输入格式:

第一行输入一个数nnn。(7≤n≤100)。

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

输出格式:

突出显示单词的n×nn \times 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

思路

设置方向数组,找到字母"y"的位置,然后利用方向数组来找和"y"相邻的"i",然后在这个方向上进行dfs,如果在该方向上可以组成单词"yizhong",把这些位置记录一下,所有的点遍历结束后,输出就可以了

AC代码

#include <bits/stdc++.h>
#define ms(a) memset(a,0,sizeof(a))
using namespace std;
char ch[110][110];
int vis[110][110];
int n;
int dis[8][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
char cha[]="yizhong";
struct Node
{
int x,y;
}p[1000];
void dfs(int x,int y,int res,int k)
{
if(res==7)
for(int i=0;i<7;i++)
vis[p[i].x][p[i].y]=1;
int dx=x+dis[k][0];
int dy=y+dis[k][1];
if(ch[dx][dy]==cha[res+1]||res==6)
{
p[res].x=x;
p[res].y=y;
dfs(dx,dy,res+1,k);
}
}
int main()
{
ms(vis);
cin>>n;
for(int i=0;i<n;i++)
cin>>ch[i];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(ch[i][j]=='y')
{
for(int k=0;k<8;k++)
{
int x=i+dis[k][0];
int y=j+dis[k][1];
if(ch[x][y]=='i')
dfs(i,j,0,k);
}
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(vis[i][j])
cout<<ch[i][j];
else
cout<<"*";
}
cout<<endl;
}
return 0;
}

洛谷1101:单词方阵(DFS)的更多相关文章

  1. 洛谷 P1101 单词方阵

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

  2. 洛谷——P1101 单词方阵

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

  3. 洛谷P1101 单词方阵【DFS】

    给一n \times nn×n的字母方阵,内可能蕴含多个"yizhong"单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着 88 个方向的任一方向,同一单词摆放时不再改变方向 ...

  4. 洛谷P1101单词方阵

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

  5. 洛谷P1101 单词方阵

    题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间[color=red ...

  6. 洛谷P1101 单词方阵——S.B.S.

    题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间[color=red ...

  7. 洛谷P1101 单词方阵【暴力】【字符串】

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

  8. 洛谷 P1101单词方阵

    我已经,是这个世界上,最幸福的女孩了                                                                         ——<末日时 ...

  9. 集训作业 洛谷P1101 单词方阵

    这个题的长度真的有点长,我直接放图片吧 这个题又是一个和谐的搜索,找到yizhong的y就开始8面搜索,遇见正确的字母就继续搜索,不正确就果断放弃,果然又是一个和谐的搜索呢. #include< ...

  10. 洛谷 P1381 单词背诵

    洛谷 P1381 单词背诵 洛谷传送门 题目描述 灵梦有n个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由m个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的 ...

随机推荐

  1. 20175312 2018-2019-2 《Java程序设计》第5周学习总结

    20175312 2018-2019-2 <Java程序设计>第5周学习总结 教材学习内容总结 已依照蓝墨云班课的要求完成了第六章的学习,主要的学习渠道是PPT,和书的课后习题. 总结如下 ...

  2. Centos7初始化脚本

    今天分享一个自己写的一个初始化的小脚本. 编写初始化系统要考虑到系统的版本问题,现在用的比较多的就是centos6和centos7,所以首先要判断一下系统的版本. cat /etc/redhat-re ...

  3. NodeJS:(二)基础常用API

    node.js中文网:http://nodejs.cn/api/ (path.Buffer.events.fs) ①path路径-----const {resolve} = require('path ...

  4. Vs10.设置.高亮(20190327)

    ZC:(20190327)只要使用的是 "Highlight all occurrences of selected word" 和 "Visual Assist X&q ...

  5. 第 8 章 容器网络 - 067 - 如何部署 Calico 网络?

    0.准备工作 Calico 是一个纯三层的虚拟网络方案,Calico 为每个容器分配一个 IP,每个 host 都是 router,把不同 host 的容器连接起来. 与 VxLAN 不同的是,Cal ...

  6. linux服务器查看项目日志命令

    1.tailf mywork.log | grep --line-buffered findUserList      实时跟踪日志,这里是只要findUserList 这个方法被运行,就会将它的日志 ...

  7. 7.5 GRASP原则五:高内聚 High Cohesion

    GRASP原则五:高内聚 High Cohesion  How to keep objects focused, understandable and manageable, and as a si ...

  8. NFine中权限判断出错的问题

    NFine中权限判断出错的问题 问题描述:登录后点击栏目一,弹出了窗口一,再点击栏目二,弹出了窗口二,然后再点击窗口一,再执行窗口一中的操作时,发现已没有任何权限,调试后发现在HandlerAutho ...

  9. 【其他】【http】【1】HTTP状态码

    一些常见的状态码: 200 - 服务器成功返回网页 400 - 错误请求 404 - 请求的网页不存在 500 - 服务器内部错误 503 - 服务器超时 状态码大全: 1xx(临时响应)表示临时响应 ...

  10. Python *Mix_w4

    1.什么是列表(list) 列表是一个可变的数据类型 列表由[ ]来表示,每一项元素使用逗号隔开.列表什么都能装,能装对象的对象. 列表可以装大量的数据,列表能装所有数据类型 2.列表的索引和切片 列 ...