题目描述

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

输入:

8   输出:

qyizhong    *yizhong

gydthkjy    gy******

nwidghji    n*i*****

orbzsfgz    o**z****

hhgrhwth    h***h***

zzzzzozo    z****o**

iwdfrgng    i*****n*

yyyygggg    y******g

输入输出格式

输入格式:

第一行输入一个数 nn 。( 7 \le n \le 1007≤n≤100 )。

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

输出格式:

突出显示单词的 n \times nn×n 矩阵。

输入输出样例

输入样例#1:

7

aaaaaaa

aaaaaaa

aaaaaaa

aaaaaaa

aaaaaaa

aaaaaaa

aaaaaaa

输出样例#1:

*******

*******

*******

*******

*******

*******

*******

题解: DFS,每次直接固定方向的搜索。

#include <bits/stdc++.h>
using namespace std;
const int MAXN=110;
char mapp[MAXN][MAXN];
int vis[MAXN][MAXN];
int ans[MAXN][MAXN];
char str[]={"yizhong"};
int n;
int dx[8]={1,-1,0,0,1,1,-1,-1};
int dy[8]={0,0,1,-1,1,-1,-1,1};
bool check(int x,int y,int k)
{
if(x<0||x>=n||y<0||y>n||mapp[x][y]!=str[k])
return false;
return true;
}
void print()//此处是记录那些点是可以构成yizhong
{
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(vis[i][j]==1)
ans[i][j]++;
}
}
}
void dfs(int x,int y ,int mx,int my,int k)
{
if(k==6&&mapp[x][y]=='g') {
vis[x][y]=1;
print();
vis[x][y]=0;
return ;
}
int kx=x+mx;
int ky=y+my;
if(check(kx,ky,k+1)){
vis[kx][ky]=1;
dfs(kx,ky,mx,my,k+1);
vis[kx][ky]=0;
} }
int main() {
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%s",mapp[i]);
memset(vis,0, sizeof(vis));
memset(ans,0, sizeof(ans));
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
if(mapp[i][j]=='y') {
for(int k=0;k<8;k++) {
vis[i][j] = 1;
dfs(i, j,dx[k],dy[k] ,0);
vis[i][j] = 0;
}
}
}
}
for(int i=0;i<n;i++){
for (int j = 0; j < n; ++j) {
if(ans[i][j]>=1)
printf("%c",mapp[i][j]);
else
printf("*");
}
printf("\n");
} return 0;
} /*
8
qyizhong
gydthkjy
nwidghji
orbzsfgz
hhgrhwth
zzzzzozo
iwdfrgng
yyyygggg
*/

P1101 单词方阵的更多相关文章

  1. 洛谷 P1101 单词方阵

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

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

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

  3. P1101 单词方阵 简单dfs

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

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

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

  5. 洛谷P1101单词方阵

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

  6. P1101 单词方阵(DFS)

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

  7. 洛谷P1101 单词方阵

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

  8. 搜索--P1101 单词方阵

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

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

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

随机推荐

  1. Ini文件格式说明

    http://www.cnblogs.com/CUIT-DX037/ 百度百科介绍:ini 文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储 ...

  2. Java中的do-while循环——通过示例学习Java编程(11)

    作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=22&cid=0 在上一篇教程中,我们讨论了w ...

  3. angularjs嵌套路由

    index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  4. Tomcat8

    一.Apache Tomcat 8介绍 Tomcat 8.0.0-RC3 (alpha) Released                                                ...

  5. meterpreter > screenshot

    meterpreter > screenshotScreenshot saved to: /opt/metasploit/msf3/wLafQYhx.jpegmeterpreter > / ...

  6. sql2012,返回数据多时不走索引

    当数据达到一定值时,都会走表扫描旧版如SQL2005时就有计算选择性的比例为 满足条件的行数/总行数<=0.7181,会走索引,其它会走表扫描有兴趣可以自己去不同版本中去测试 Roy Wu(吴熹 ...

  7. window下安装scala搭载Intellij IDE

    最近由于公司业务需求,要用到scala,编写还是windows下较好,linux下运行比较靠谱,废话少说,直接上步骤! 1.首先安装java环境 jdk下载地址:http://www.oracle.c ...

  8. SqlServer作业指定目标服务器

    用SSMS生成数据库作业的创建脚本的时候,有一步是sp_add_jobserver操作: EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = ...

  9. 2754: C++习题-快速排序

    2754: C++习题-快速排序 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 921  Solved: 406[Submit][Status][Web ...

  10. python基础一 day16 内置函数

    # 数据类型 :int bool ...# 数据结构 : dict list tuple set str reversed()l = [1,2,3,4,5]l.reverse()print(l)l = ...