P1101 单词方阵(DFS)

题目描述

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

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

输入输出格式

输入格式:

 

第一行输入一个数nn。(7 \le n \le 1007≤n≤100)。

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

 

输出格式:

 

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

题解:深度优先搜索搜即可,用结构体记录路径

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>using namespace std;const int maxn=100+10;
struct node
{int x,y;
}c[maxn];//记录路径
char fz[maxn][maxn],stand[]="yizhong";//fz保存单词矩阵,stand保存保准的“yizhong”便于匹配
int vis[maxn][maxn];//保存路径,是否该点为答案
int dir[][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};//八向的常量数组
void dfs(int x,int y,int k,int cur)
{if(cur==7){for(int i=0;i<7;i++)vis[c[i].x][c[i].y]=1;}else{int dx=x+dir[k][0];//沿着正确的k方向搜索int dy=y+dir[k][1];if(cur==6||fz[dx][dy]==stand[cur+1]){c[cur].x=x;c[cur].y=y;dfs(dx,dy,k,cur+1);}}
}
int main()
{int n;scanf("%d",&n);for(int i=0;i<n;i++)scanf("%s",fz[i]);//memset(vis,0,sizeof(vis));for(int i=0;i<n;i++)for(int j=0;j<n;j++)if(fz[i][j]=='y') for(int k=0;k<8;k++){int x=i+dir[k][0];int y=j+dir[k][1];if(fz[x][y]=='i')dfs(i,j,k,0);}for(int i=0;i<n;i++){//输出结果for(int j=0;j<n;j++)if(vis[i][j]) printf("%c",fz[i][j]);else printf("*");printf("\n");}return 0;
}

 

转载于:https://www.cnblogs.com/Staceyacm/p/10781972.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业级rancher搭建Kubernetes(采用rancher管理平台搭建k8s)

一、简介 Rancher简介 来源官方&#xff1a;https://www.cnrancher.com/ Rancher是一个开源的企业级容器管理平台。通过Rancher&#xff0c;企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部…

[工具]java_sublime的快速使用

目录 使用 : 怎么运行: 调整字体: 使用 : 新建--->写好代码后-->另存为尾缀是.java的文件 怎么运行: 在你另存为的目录下cmd调用控制台输入dos指令--->执行javac 文件名.java(有.java尾缀)(编译为.class文件)--->java 文件名(没有.class尾缀设计者认为执行的是…

基于SOA的银行系统架构

Part-1 【简述】 1.通过引入面向服务架构&#xff08;SOA&#xff09;&#xff0c;企业服务总线&#xff08;ESB&#xff09;&#xff0c;适配器&#xff08;Adapter&#xff09;及面向构件等技术&#xff0c;尝试打造一个统一业务流程服务平台&#xff0c;实现面向流程的服务…

一次前后端分离的实践

前后端分离该如何做? 这个问题&#xff0c;不同的技术人员&#xff0c;由于所处的岗位不一样&#xff0c;给出的答案都不一样。 前后端分离的问题&#xff0c;不仅仅是技术上的选型问题&#xff0c;还涉及到整个团队在认知、职责、流程上面重新定义的问题&#xff0c;这也是为…

queryList爬虫获取内容的几种方法总结 queryList给抓取的内容增加html追加元素html 代码实例...

//简略内容: 1. $data1 $ql->find(.two img)->map(function($item){return $item->alt; }); // 等价下面这句话 $data2 $ql->find(.two img)->attrs(alt);2. $texts $ql->find(.two>a)->texts(); $htmls $ql->find(#one span)->htmls();3. $…

C++解析-外传篇(1):异常处理深度解析

0.目录 1.异常的最终处理 2.结束函数terminate() 3.小结 1.异常的最终处理 问题&#xff1a; 如果在main函数中抛出异常会发生什么&#xff1f; 如果异常不处理&#xff0c;最后会传到哪里&#xff1f; 下面的代码的输出什么&#xff1f; 示例——异常的最终处理&#xff1f;&a…

《浅谈架构之路:前后端分离模式》 - 山人行 - 博客园

前言&#xff1a;分离模式 对前后端分离研究了一段时间&#xff0c;恰逢公司有一个大项目决定尝试使用前后端分离模式进行&#xff0c;便参与其中。该项目从2016年初立项至今&#xff0c;平平稳稳得度过&#xff0c;但也涌现出越来越多的问题&#xff0c;绝对不是说前后端分离模…

springboot快速集成swagger

今天技术总监说&#xff1a;小明&#xff0c;我们本次3.0改造&#xff0c;使用swagger2.0作为前后端分离的接口规范&#xff0c;它可以一键生成前后端的API,一劳永逸……小明&#xff1a;&#xff1f;&#xff1f;&#xff1f; Spring Boot 框架是目前非常流行的微服务框架&…

php curl处理get和post请求

CURL 是一个利用URL语法规定来传输文件和数据的工具&#xff0c;支持很多协议&#xff0c;如HTTP、FTP、TELNET等。最爽的是&#xff0c;PHP也支持 CURL 库。使用PHP的CURL 库可以简单和有效地去抓网页。你只需要运行一个脚本&#xff0c;然后分析一下你所抓取的网页&#xff0…

【Web】JavaWeb项目为什么我们要放弃jsp?为什么要前后端解耦?为什么要前后端分离?2.0版,为分布式架构打基础。 - CSDN博客

前戏 前后端分离已成为互联网项目开发的业界标准使用方式&#xff0c;通过nginxtomcat的方式&#xff08;也可以中间加一个nodejs&#xff09;有效的进行解耦&#xff0c; 并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务&#xff08;多种客户…

MongoDB升级导致启动失败

起因 最近项目使用MongoDB,但是作为一个技术菜鸟&#xff0c;NoSQL数据库我还真不会用&#xff0c;于是我就在自己的阿里云服务器上安装了一个MongoDB4.0.9。 现象 但是当我使用yum -y update升级以后&#xff0c;MongoDB无法启动了&#xff0c;即使重装删除了MongDB的文件了还…

测者的测试技术手册:揭开java method的一个秘密--巨型函数

揭开java method的一个秘密&#xff1a;巨型函数 相信&#xff0c;很多人都不知道Java的Method的上限为64K。本文将超过这个上限的函数叫做巨型函数。 巨型函数的问题 1、如果代码超过了这个限制&#xff0c;Java编译器就报"Code too large to complier"的错误。 2、…

前端攻略系列(二) - 前端各种面试题

幸运且光荣的被老大安排了一个任务 - “去整理些前端面试题”。年前确实不是招人的好时候&#xff0c;所以我们前端团队经过了超负荷的运转&#xff0c;终于坚持过了春节。春节以后就开始招人啦&#xff0c;这套题考察的目标就是基础基础再基础&#xff0c;嘿嘿。 事先声明&…

html 初识

一、web请求流程模拟 python编写的简易服务器应用程序 import socketserversocket.socket() ip_port (127.0.0.1,8080) server.bind(ip_port) server.listen()while 1:conn, addr server.accept()from_browser_msgconn.recv(1024)print(from_browser_msg)conn.send(bHTTP/1.1 …

Iframe的那些事

在web开发中&#xff0c;经常会用到iframe&#xff0c;难免会碰到需要在父窗口中使用iframe中的元素、或者在iframe框架中使用父窗口的元素 js 在父窗口中获取iframe中的元素 1、 格式&#xff1a;window.frames["iframe的name值"].document.getElementByIdx_x(…

异常处理try...catch...throw

C 引入了异常处理机制。其基本思想是&#xff1a;函数 A 在执行过程中发现异常时可以不加处理&#xff0c;而只是“拋出一个异常”给 A 的调用者&#xff0c;假定为函数 B。 拋出异常而不加处理会导致函数 A 立即中止&#xff0c;在这种情况下&#xff0c;函数 B 可以选择捕获 …

Makefile 中:= ?= += =的区别

是最基本的赋值: 是覆盖之前的值? 是如果没有被赋值过就赋予等号后面的值 是添加等号后面的值转载于:https://www.cnblogs.com/mingyunrangwozoudaoxianzai/p/10118039.html

原生JS写Ajax的请求函数

本文主要介绍了如何通过原生JavaScript封装ajax请求&#xff0c;文中给出了具体的实现代码和详细的解释&#xff0c;希望对你有所帮助。 一、JS原生Ajax ajax&#xff1a;一种请求数据的方式&#xff0c;不需要刷新整个页面&#xff1b; ajax的技术核心是 XMLHttpRequest 对象&…

软件工程--第十三周学习进度

第十三周代码量258 所花时间 6h博客量 2篇了解到的知识点 在寻找“水王”程序编写时&#xff0c;学习了一种新的设计思想&#xff0c;两两删除法&#xff0c;最后剩下的就是水王。这种设计思想&#xff0c;感觉可以用到多种编程&#xff0c;感觉很有意思。转载于:https://www.c…

如何使用 tf object detection

# 如何使用 tf object detectionhttps://juejin.i m/entry/5a7976166fb9a06335319080https://towardsdatascience.com/how-to-train-your-own-object-detector-with-tensorflows-object-detector-api-bec72ecfe1d9https://towardsdatascience.com/building-a-toy-detector-with…