当前位置: 首页 > news >正文

洛谷 单词方阵 dfs

题目描述

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

输入格式

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

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

输出格式

突出显示单词的 n×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 <iostream>
#include <cstring>
#include <vector>
#include <string>
#include <algorithm>
#define MX 105
using namespace std;
//全局变量
int n;
char ch[MX][MX];
int dx[8] = {0,0,1,-1,1,1,-1,-1},dy[8] = {1,-1,0,0,1,-1,1,-1};
string s = "yizhong";
int flag = 0,visited[MX][MX];
//深度优先搜索
void dfs(int x,int y,int dir,int forward) {
//cout<<x<<" "<<y<<" "<<dir<<" "<<forward<<endl;
if(ch[x][y] == 'g') {
flag = 1;
visited[x][y] = 1;
return;
}
int tx = x + dx[dir],ty = y + dy[dir];
if(ch[tx][ty] == s[forward+1]) {
dfs(tx,ty,dir,forward+1);
}
if(flag == 1) {
visited[x][y] = 1;
}
return;
}
int main() {

    cin>>n;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
cin>>ch[i][j];
//cout<<ch[i][j];
}
//cout<<endl;
}
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
//cout<<1<<" "<<i<<" "<<j<<endl;
if(ch[i][j] == 'y') {
for(int k = 0; k < 8; k++) {
flag = 0;
dfs(i,j,k,0);
}
}
}
}
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
if(visited[i][j] == 1)cout<<ch[i][j];
else cout<<"*";
}
cout<<endl;
}
return 0;
}

http://www.dtcms.com/a/292916.html

相关文章:

  • 免费实验室记录本:生物医药科研的数字化转型基石
  • Docker,其他机器下载镜像并copy到目标机器导入docker镜像
  • LWIP学习记录2——MAC内核
  • 合同管理系统技术架构深度解析:快鹭云如何通过NLP+区块链实现纠纷率下降67%|附动态安全库存算法实现
  • NumPy:Python 科学计算的基石
  • 分类模型(BERT)训练全流程
  • IO复用(多路转接)
  • c语言学习(days08)
  • 对比学习 | 软标签损失计算
  • 安科瑞工商业光储充新能源电站ACCU-100M微电网协调控制器
  • MyBatis-Plus 分页实战
  • 目前主流的AI深度学习框架对Windows和Linux的支持哪个更好
  • 单细胞转录组学+空间转录组的整合及思路
  • 一个不起眼的问题,导致插件加载失败
  • python中 tqdm ,itertuples 是什么
  • 学习软件测试的第十九天
  • ​Eyeriss 架构中的访存行为解析(腾讯元宝)
  • Java学习----Redis集群
  • SHAP的升级版:可解释性框架Alibi的相关介绍(一)
  • L1与L2正则化:核心差异全解析
  • RabbitMQ03——面试题
  • DOM/事件高级
  • haprox七层代理
  • 医院如何实现节能降耗?
  • <另一种思维:语言模型如何展现人类的时间认知>读后总结
  • 【上市公司变量测量】Python+FactSet Revere全球供应链数据库,测度供应链断裂与重构变量——丁浩员等(2024)《经济研究》复现
  • Day28| 122.买卖股票的最佳时机 II、55. 跳跃游戏、45.跳跃游戏 II、1005.K次取反后最大化的数组和
  • Spring AI Alibaba + JManus:从架构原理到生产落地的全栈实践——一篇面向 Java 架构师的 20 分钟深度阅读
  • MSTP实验
  • 深入理解 Qt 中的 QImage 与 QPixmap:底层机制、差异、优化策略全解析