思路:

先把地图二维字符数组存进去之后,遍历寻找到一个‘y’,然后我们可以设置一个八个方向的方向数组,让‘y’的坐标,遍历加上方向坐标,找到’i‘然后沿着这个方向,dfs下去,每次寻找到正确的,然后建立一个结构体存下点的坐标,然后设置bool数组标记坐标位置,最后再遍历输出,当bool数组为true时,正常输出,当bool数组为false时,输出’*‘。

代码如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll; const int N = +; struct node{
int x,y;
}c[N]; char mp[N][N],stand[]="yizhong";
int vis[N][N];
int dir[][]={{-,-},{-,},{-,},{,-},{,},{,-},{,},{,}}; void dfs(int x,int y,node c[],int k,int cur)
{
if(cur==)
{
for(int i=;i<;i++)
vis[c[i].x][c[i].y]=; }
else
{
int dx=x+dir[k][];
int dy=y+dir[k][];
if(cur==||mp[dx][dy]==stand[cur+])
{
c[cur].x=x;
c[cur].y=y;
dfs(dx,dy,c,k,cur+);
}
}
}
int main()
{
int n;
cin >> n;
for(int i=;i<n;i++)
{
scanf("%s",mp[i]);
}
memset(vis,,sizeof(vis));
for(int i=;i<n;i++)
{
for(int j=;j<n;j++)
{
if(mp[i][j]=='y')
{
for(int k=;k<;k++)
{
int x=i+dir[k][];
int y=j+dir[k][];
if(mp[x][y]=='i')
{
dfs(i,j,c,k,);
}
}
}
}
}
for(int i=;i<n;i++)
{
for(int j=;j<n;j++)
{
if(vis[i][j]==)
printf("%c",mp[i][j]);
else
printf("*");
}
printf("\n");
}
return ;
}

DFS(单词方阵)的更多相关文章

  1. 洛谷 P1101 单词方阵

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

  2. P1101 单词方阵 简单dfs

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

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

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

  4. P1101 单词方阵(DFS)

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

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

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

  6. 单词方阵 洛谷 P1101

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

  7. 【洛谷P1101】单词方阵

    题目大意:给一 \(n \times n\) 的字母方阵,内可能蕴含多个 \("yizhong"\) 单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着 8 个方向的任一方向, ...

  8. 洛谷P1101单词方阵

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

  9. P1101 单词方阵

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

随机推荐

  1. 延时对象promise的使用

    promise是ES6(ECMA Script6)的新标准,只能在支持ES6的浏览器中使用 Promise是一个延时对象,创建延时对象时需要传入一个函数类型的参数 这个函数有两个参数:resolve和 ...

  2. AI学习笔记:特征工程

    一.概述 Andrew Ng:Coming up with features is difficult, time-consuming, requires expert knowledge. &quo ...

  3. CAS单点登录系列之极速入门于实战教程(4.2.7)

    @ 目录 一. SSO简介 1.1 单点登录定义 1.2 单点登录角色 1.3 单点登录分类 二. CAS简介 2.1 CAS简单定义 2.2 CAS体系结构 2.3 CAS原理 三.CAS服务端搭建 ...

  4. 【网络安全】——客户端安全(浏览器安全、XSS、CSRF、Clickjacking)

    ​ 近在学习网络安全相关的知识,于是先从业内一本系统讲Web安全的书<白帽子讲Web安全>系统学习Web安全的相关知识.在此整理书中的知识层次,不求详尽,只求自己对整个Web安全梗概有所了 ...

  5. JavaScript form表单提交与验证

    原网址:https://blog.csdn.net/vipwxs/article/details/79119701 一.form对象的属性: name:获取表单的名称,该name一般给JS使用 met ...

  6. Adb adb push (remote write failed: No space left on device)

    修改完成程序后, mm 后, 准备要push 进到公司测试手机里面的.之前还真的没有遇到过这个问题,查了一下, 应该是手机没空间了的 sudo adb root sudo adb remount su ...

  7. go 内置函数

    一.什么是内置函数? 二.内置函数有哪些? 名称 说明 close 用于管道通信 len.cap len 用于返回某个类型的长度或数量(字符串.数组.切片.map 和管道):cap 是容量的意思,用于 ...

  8. Java第三十一天,用Properties集合操作IO

    一.Properties 这个类是线程安全的:多个线程可以共享一个Properties对象,而不需要外部同步 1.常用方法 Object setProperty(String key, String ...

  9. Javascript 入门 必备知识点

    1.如何得到html的input标签的值: (1). $('#id').val(); (2). $("#id").attr("value"); 2.javasc ...

  10. Linux 磁盘管理篇,设备文件

    IDE硬盘                /dev/hd[a-d] SCSI/SATA/USB硬盘        /dev/sd[a-p] U盘                /dev/sd[a-p] ...