洛谷【1101】单词方阵
来源:互联网 发布:mysql 连续 天 统计 编辑:程序博客网 时间:2024/05/23 19:15
给一nXn的字母方阵,内可能蕴含多个“yizhong”单词。单词在方阵中是沿着同一方向连续摆放的。摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间[color=red]可以[/color]交叉,因此有可能共用字母。输出时,将不是单词的字母用“*”代替,以突出显示单词。例如:
输入:
8 输出:
qyizhong *yizhong
gydthkjy gy******
nwidghji n*i*****
orbzsfgz o**z****
hhgrhwth h***h***
zzzzzozo z****o**
iwdfrgng i*****n*
yyyygggg y******g
输入输出格式
输入格式:
第一行输入一个数n。(7<=n<=100)。
第二行开始输入nXn的字母矩阵。
输出格式:
突出显示单词的nXn矩阵。
输入输出样例
输入样例#1:
7
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
aaaaaaa
输出样例#1:
这是一道深搜的题目,在洛谷题解中很多人用的是枚举,这里还是以练习深搜为主用深搜思路做
分析:
找到y后搜索8个方向,如果(有等于i的继续沿着这个方向向下搜索看是否继续与
“yizhong”这个字符串后面的字符相等。如果计数器累计等于7,说明7个字符都相等了。那么回溯标记数组vis记为1。) 如果(没有等于i的换个方向继续搜索。)
这样在输出结果的时候,如果遇见标记数组vis等于1的时候就输出字符,否则就输出’*’。
代码:
Ubuntu链接:
http://paste.ubuntu.com/24391322/
运行结果:
*yizhong
gy******
n*i*****
o**z****
h***h***
z****o**
i*****n*
y******g
细节分析(人工debug):
可以看见在第一次时找到y位置为(0,1)
按照dx[0],dy[0]搜索找到i,于是在此方向上继续搜索。
(此时f!=-1,应执行下面的那几句深搜语句
【即在上面第一次f=-1是为了找方向,下面是找到了方向以后按照这个方向搜索看是否可以记录下7个字符,如果记录下来
(在if(s==7)里回溯标记vis数组,注意此时xx,yy都是同名局部变量,所以尽管回溯到最低时,外面的搜索语句还是在s=7时的xx,yy继续向下搜索到不满足条件时
(按照栈的方式,自己回溯))】
可以看见,此时转到打印出语句:其他1 f0 xx 0 yy 8到达搜索边界,回溯调用栈
一直回溯到打印出语句:第一次后 f 0 xx 0 yy 2(回到线性搜索最初i的位置)
继续搜索其他方向,可以看见打印出语句如:第一次前 f 1 xx 0 yy 0等等
在第一次搜索中其他7个方向均没有满足条件的,因此在打印出语句如下:
f 7 xx -1 yy 0后就退出本次搜索了。
(但是我一直有个疑问:那些搜索里加的return;语句是什么用啊)
)
其他几个位置的y搜索方法类似,图分别如下
2:
3:
4:
5:
6:
7:
引用块内容参考文章:http://m.blog.csdn.net/article/details?id=48650439
- [洛谷1101]单词方阵
- 洛谷【1101】单词方阵
- 洛谷 1101 单词方阵
- 洛谷P1101 单词方阵
- #洛谷 P1101单词方阵
- 洛谷P1101 单词方阵
- 洛谷 P1101 单词方阵
- 洛谷 P1101 单词方阵
- 洛谷 P1101 单词方阵
- |洛谷|DFS|P1101 单词方阵
- 【搜索】洛谷 P1101 单词方阵
- 单词方阵
- 洛谷——P1101 单词方阵
- P1101 单词方阵
- C++ P1101 单词方阵
- P1101 单词方阵
- P1101 单词方阵
- P1101 单词方阵
- 自己实现的库函数(memset,memcmp,memcpy,memmove)
- 【Matlab数据的可视化】自适应绘图函数fplot
- nyoj-独木舟上的旅行
- 数据结构-二叉树:C++模板类递归实现与非递归实现
- PyQt5 基本教程
- 洛谷【1101】单词方阵
- python 声明式编程
- TensorFlow下运行mnist遇到的问题、更新cudnn方法
- jquery 回车事件
- 解决本地运行RMMV的HTML5游戏时出现Failed to load: data/actos.json 问题
- Java中1000==1000为false而100==100为true
- gazebo简明教程
- android游戏开发实例-可局域网对战的飞行棋(一)
- hdu1010(Tempter of the Bone)深搜+剪枝