题目概况
题目链接: https://www.luogu.com.cn/problem/P1101
难度: 普及-
题目分析
简化题目: 我觉得题面简洁明了
涉及知识点: 深度优先搜索的玄学操作
解题思路 :
有几句关键句,我解析一下,大家就基本出思路了:
1. 同一单词摆放时不再改变方向 。也就是说我们不必考虑在dfs
中for
循环八个方向,只需要在一开始设定好即可
2. 单词与单词之间可以交叉,因此有可能共用字母 换句话说,你最开始必须得八个方向都探一遍,不能探完一个方向就走人
另外,我采用如果当前递归到的某个字符能与前后构成一个单词,则将前后包括自己全部标记为true
,在输出时输出非true的方格。
代码拆解及要点解析
普及-大可不必写拆解分析
完整代码
#include <iostream>
#include <cstdio>
using namespace std;
int n; //题目设定
char maze[105][105]; //图
bool vis[105][105]; //标记
char link[10]; //衔接下一个的,用于判断
int dir[8][2] = {
{
0,-1}, {
0,1}, {
1,0}, {
-1,0