题目描述

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

输入:8                     输出:qyizhong              *yizhonggydthkjy              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:

*******
*******
*******
*******
*******
*******
*******

源代码

#include<iostream>
using namespace std;char str[101][101];
char judge[101][101]={0};
int direction_x[8]={-1,-1,-1,0,0,1,1,1},direction_y[8]={-1,0,1,-1,1,-1,0,1};//记录方向
void dfs(int x,int y,int direction);int main()
{int n;int i,j,k;int flag;cin>>n;//输入矩阵大小nfor(i=0;i<n;i++)//输入字母矩阵for(j=0;j<n;j++)cin>>str[i][j];for(i=0;i<n;i++)//寻找yizhongfor(j=0;j<n;j++)if(str[i][j]=='y')//判断是否有yfor(k=0;k<8;k++)//如果有y,在周围寻找是否有iif( str[i+direction_x[k]][j+direction_y[k]] == 'i')//如果周围方向有i{flag=k;//记录有i的方向dfs(i,j,flag);//调用函数向方向k搜索}for(i=0;i<n;i++)//如果坐标标记点为1,则输出该坐标的字母,否则输出*{for(j=0;j<n;j++)if(judge[i][j]==1)   cout<<str[i][j];else  cout<<"*";cout<<endl;       }return 0;
}void dfs(int x,int y,int direction)
{char ch[7]={'y','i','z','h','o','n','g'};int sum=0;int i;int x1,y1;x1=x,y1=y;for(i=0;i<7;i++)//从当前左边开始向direction方向寻找yizhong{if(str[x1][y1]==ch[i])//判断是否有要找的字sum++;//如果有,计数器+1else//如果没有break;//终止循环x1+=direction_x[direction];//改变坐标x,以移动到下一点y1+=direction_y[direction];//改变坐标y,以移动到下一点}if(sum==7)//如果sum=7,说明找到了yizhong{for(i=0;i<7;i++){judge[x][y]=1;//将yizhong的坐标标记为1x+=direction_x[direction];//改变坐标x,以移动到下一点y+=direction_y[direction];//改变左边y,以移动到下一点}}
}

单词方阵(洛谷-P1101)相关推荐

  1. 深度优先搜索——单词方阵(洛谷 P1101)

    题目选自洛谷P1101 这道题也是挺不错的DFS的题,但是区别于一般的深搜, 这道题在选定一个方向后,就不能改变了! 给出我的详细思路就是: 用char a[101][101]保存输入的数据,int ...

  2. 洛谷P1101、P1019

    洛谷P1101 happy 2020年A的第一道题~(- ̄▽ ̄)- 题目大意:在一个二维字符数组中找到所有的连续'yizhong'的字符(各个方向),然后将其他的地方都用'*'替换掉. 解题思路:最开 ...

  3. 枚举求解单词方阵(洛谷P1101题题解,Java语言描述)

    题目要求 P1101题目链接 分析 可以用DFS做,但我立下了个Flag,所以就用了朴素的枚举来做.... 结果,我的天哪,做了好几个小时-- 其实这种地图题,真的适合 DFS or BFS or D ...

  4. 洛谷P1101 单词方阵 (C语言 + 详细注释 + 五妙)

    //首先声明一下,我的代码大部分是参照洛谷的一位博客:Way_How_Fri3nd.看完后我就觉得写的非常好,由于我不知道怎么转载洛谷的博客,所以干脆自己写一篇CSDN博客,因为写的实在是太好了,我迫 ...

  5. c语言倒序输出单词_洛谷 || 单词覆盖还原(C语言)

    点击上方「蓝字」关注"程序员Bob" 每天与你不见不散! 每日一句,送给最珍贵的你: 诱人的机会总是转瞬即逝的.真正好的投资机会不会经常有,也不会持续很长的时间,所以你必须做好行动 ...

  6. 洛谷——P1101 单词方阵

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

  7. 洛谷 P1101 单词方阵

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

  8. 洛谷 P1101 单词方阵

    DFS的例题,难点在于所选的yizhong必须是一行的不能拐弯,我第一次写的时候直接在DFS里的判断条件里加了if(当前位置的字符==yizhong相应位置的字符)这样的语句,当然这样不对,因为没有保 ...

  9. 洛谷P1101 单词方阵

    一道简单的利用dfs思想解决的水题,写这篇文章只是为了忏悔为什么疫情在家学习的时候没有好好学习数据结构以及大二没有好好写过题,导致快大四了还要重头学数据结构(感谢我的老师让我数据结构飘过) 这道题我大 ...

最新文章

  1. python是一个免费开源的软件吗_6个最佳的开源Python应用服务器
  2. 何时在C ++中使用extern
  3. 单例-单例设计模式代码实现
  4. 技术 | Python从零开始系列连载(二十九)
  5. html 布局满屏,CSS全屏布局的5种方式
  6. 安卓开发学习笔记(六):如何实现指定图片定时开屏功能?
  7. iOS-格式化金额,三位一逗号
  8. [Java] 蓝桥杯ALGO-119 算法训练 寂寞的数
  9. python 去除水印_python 利用opencv去除图片水印
  10. P.Laguna/AUTOMATIC DETECTION OF WAVE BOUNDARIES IN MULTILEAD ECG SIGNALS VALIDATION WITH THE CSE DB
  11. ICCV 2021 best paper-Swin Transformer:对各类SOTA的降维打击!
  12. 又遇到jqGrid在chrome下宽度不正常有滚动条
  13. 提示框几秒消失比较好_移动设计提示框介绍-《产品日常笔记》
  14. K3Cloud BOS设计 值更新 字段拼接到文本字段
  15. service随APP关闭而关闭
  16. w3af 安装并配置桌面和快速启动栏
  17. Visual Studio 2012
  18. iOS6的控制屏幕旋转技巧
  19. 论语 灵公篇(笔记)
  20. 2021-6-8-今日收获

热门文章

  1. 那天,他无意间瞟了眼程序员的桌面……
  2. 面试官:能说说Redis的持久化机制吗?
  3. 面试又栽在JVM上了!
  4. 你以为工厂模式很简单,可能是因为你懂的只是冰山的一角
  5. 李伟山:金融撮合架构
  6. 业务场景下数据采集机制和策略
  7. Java描述设计模式(06):建造者模式
  8. Python学习十大良好习惯
  9. 【转】Windows系统中ckplayer视频边下边放,视频转码mp4及last atom in file was not a moov atom问题...
  10. TensorFlow是什么?TensorFlow入门与实践 架构与设计详解