题目描述

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

  1. 输入:
  2. 8 输出:
  3. qyizhong *yizhong
  4. gydthkjy gy******
  5. nwidghji n*i*****
  6. orbzsfgz o**z****
  7. hhgrhwth h***h***
  8. zzzzzozo z****o**
  9. iwdfrgng i*****n*
  10. yyyygggg y******g

输入输出格式

输入格式:

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

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

输出格式:

突出显示单词的n*n 矩阵。

输入输出样例

输入样例#1:

  1. 7
  2. aaaaaaa
  3. aaaaaaa
  4. aaaaaaa
  5. aaaaaaa
  6. aaaaaaa
  7. aaaaaaa
  8. aaaaaaa
输出样例#1:

  1. *******
  2. *******
  3. *******
  4. *******
  5. *******
  6. *******
  7. *******
    分析:因为是要找沿着八个方向的单词“yizhong”,我们想到了要遍历而且是深度优先,沿八个方向就想着建立方向数组,这时候注意建立方向数组的时候一定要保证方向相反的两个方向下标
    之和应该为7,这样可以方便我们回溯,本题采用的是染色法,题目质量不错,可以多看看。
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int n;char a[][];
  4. int bj[][];
  5. char book[]="izhong";
  6. int dx,dy;
  7. int nexts[][]={{,},{,},{,},{,-},{-,},{-,},{-,-},{,-}};//按照相反的相加和为7来设置方向
  8. void ranse(int x,int y,int step,int fang){
  9. if(step>=) return;//如果染色完毕,则返回。
  10. bj[x][y]=;//标记,在之后的染色操作中跳过
  11. //cout<<233<<endl;
  12. dx=x+nexts[fang][];
  13. dy=y+nexts[fang][];
  14. ranse(dx,dy,step+,fang);//开始染色后就始终保持方向不变
  15. }
  16. void dfs(int x,int y,int step,int fang){
  17. if(x<||x>n||y<||y>n) return; //防止越界
  18. if(step>=){//如果step为6则说明都满足
  19. ranse(x,y,,-fang);//注意此时传进去的是反方向
  20. return ;//注意返回
  21. }
  22. //cout<<233<<endl;
  23. dx=x+nexts[fang][];//这里是开始方向迁移
  24. dy=y+nexts[fang][];
  25. if(a[dx][dy]!=book[step]) return ;//不满足则返回
  26. //cout<<233<<endl;
  27. dfs(dx,dy,step+,fang);//沿着一个方向一直走
  28. }
  29. int main(){
  30. cin>>n;
  31. for(int i=;i<=n;i++){
  32. for(int j=;j<=n;j++){
  33. cin>>a[i][j];
  34. }
  35. }
  36. for(int i=;i<=n;i++){
  37. for(int j=;j<=n;j++){
  38. if(a[i][j]=='y'){
  39. for(int fang=;fang<;fang++){
  40. dfs(i,j,,fang);
  41. }
  42. }
  43. }
  44. }
  45. for(int i=;i<=n;i++){
  46. for(int j=;j<=n;j++){
  47. if(bj[i][j]!=)
  48. a[i][j]='*';
  49. cout<<a[i][j];
  50. }
  51. cout<<endl;
  52. }
  53. return ;
  54. }
  1.  

洛谷P1101 单词方针的更多相关文章

  1. 洛谷 P1101 单词方阵

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

  2. 洛谷——P1101 单词方阵

    https://www.luogu.org/problem/show?pid=1101#sub 题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放 ...

  3. 洛谷P1101 单词方阵——S.B.S.

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

  4. 洛谷P1101 单词方阵【暴力】【字符串】

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

  5. 洛谷P1101单词方阵

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

  6. 洛谷P1101 单词方阵

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

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

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

  8. 洛谷 P1101单词方阵

    我已经,是这个世界上,最幸福的女孩了                                                                         ——<末日时 ...

  9. 集训作业 洛谷P1101 单词方阵

    这个题的长度真的有点长,我直接放图片吧 这个题又是一个和谐的搜索,找到yizhong的y就开始8面搜索,遇见正确的字母就继续搜索,不正确就果断放弃,果然又是一个和谐的搜索呢. #include< ...

随机推荐

  1. (转)Introduction to Gradient Descent Algorithm (along with variants) in Machine Learning

    Introduction Optimization is always the ultimate goal whether you are dealing with a real life probl ...

  2. Sublime text 3 汉化教程

    首先,需要安装Package Control 启动并进入sublime主界面,打开Sublime Text的控制台(快捷键 ctrl + ~) 然后我们到Package Control官方网站,复制s ...

  3. Twitter开发2

    There are different API families The standard (free) Twitter APIs consist of REST APIs and Streaming ...

  4. 51nod 1349 最大值(单调栈)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1349 题意: 求区间内最大值大于等于k的区间个数. 思路: 利用求出对于 ...

  5. ASP.NET —— Web Pages

    为简单起见,新建一个空的web工程,再新建一个MVC的视图(.cshtml),因为WP是单页面模型,所以以后就在这个页面中进行试验. Razor语法简介: 变量可用var或者其确切类型声明. 遍历fo ...

  6. pc网页中嵌入百度地图

    pc网页中嵌入百度地图 1 打开百度地图生成器: http://api.map.baidu.com/lbsapi/creatmap/ 2 设置好了之后,点击获取代码,将代码粘贴到文件中保存为html文 ...

  7. SourceTree/git解决pre-commit hook failed的问题

    一. git commit -m 'xxx' 出现问题 今天在上传项目的时候在commit阶段遇到一个问题,无论是在Sourcetree上传还是用命令git commit -m 'xxx'都报了一下错 ...

  8. Java+selenium 爬Boss直聘中职位信息,薪资水平和职位描述

      需要下载合适的selenium webdirver jar包和对应浏览器的驱动jar包 import org.openqa.selenium.By; import org.openqa.selen ...

  9. JavaSE 字符串和正则表达式

    根据不懂的自己整理一下,跟着老师进度刷一遍课本,记录琐碎不懂知识 1.StringTokenizer类 String[] mess= {"整数部分","小数部分" ...

  10. python发送requests请求时,使用登录的token值,作为下一个接口的请求头信息

    背景介绍: 发送搜索请求时,需要用到登录接口返回值中的token值 代码实现: 登录代码: 搜索接口: