洛谷 P1101 单词方阵

题目链接

https://www.luogu.org/problemnew/show/P1101


题目描述

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


输入输出格式

输入格式:

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

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

输出格式:

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


思路

每天一篇博文,嘤嘤嘤,所以我又来啦!

看到一篇题解很牛掰的样子,于是照着就打下来了......qaq

先用数组f,g分别标记x,y的加减,再寻找“y”的位置,找到之我们后用八个方向去试

如果每一位皆符合,那么st字符串数组就赋值,最后处理一下st,输出就好啦


代码

#include<bits/stdc++.h>
using namespace std;
string st[1001],s[1001];
int f[8]={0,-1,-1,-1,0,1,1,1};
int g[8]={1,1,0,-1,-1,-1,0,1};
int a1,a2,n;
bool pd;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)cin>>s[i];
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
st[i]+='0';
}
}
for(int i=1;i<=n;i++){
for(int j=0;j<=n-1;j++){
if(s[i][j]=='y'){
for(int k=0;k<=7;k++){
a1=i;a2=j;
pd=1;
for(int l=1;l<=6;l++){
a1+=f[k];a2+=g[k];
if(a1<1||a1>n||a2<0||a2>n-1)pd=0;
if(pd==0)break;
if(l==1&&s[a1][a2]!='i')pd=0;
if(l==2&&s[a1][a2]!='z')pd=0;
if(l==3&&s[a1][a2]!='h')pd=0;
if(l==4&&s[a1][a2]!='o')pd=0;
if(l==5&&s[a1][a2]!='n')pd=0;
if(l==6&&s[a1][a2]!='g')pd=0;
}
a1=i;a2=j;
if(pd){
for(int l=0;l<=6;l++){
st[a1][a2]=s[a1][a2];
a1+=f[k],a2+=g[k];
}
}
}
}
}
}
for(int i=1;i<=n;i++){
for(int j=0;j<=n-1;j++){
if(st[i][j]=='0')st[i][j]='*';
}
}
for(int i=1;i<=n;i++){
cout<<st[i]<<'\n';
}
}

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

  1. 洛谷——P1101 单词方阵

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

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

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

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

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

  4. 洛谷P1101单词方阵

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

  5. 洛谷P1101 单词方阵

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

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

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

  7. 洛谷 P1101单词方阵

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

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

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

  9. 洛谷P1101 单词方针

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

随机推荐

  1. Docker最全教程——从理论到实战(八)

    在本系列教程中,笔者希望将必要的知识点围绕理论.流程(工作流程).方法.实践来进行讲解,而不是单纯的为讲解知识点而进行讲解.也就是说,笔者希望能够让大家将理论.知识.思想和指导应用到工作的实际场景和实 ...

  2. Linux下安装Tomcat启动报错

    一.报以下错误: Using CATALINA_BASE:   /home/apache-tomcat-7.0.72Using CATALINA_HOME:   /home/apache-tomcat ...

  3. Shell编程(week4_day1)--技术流ken

    本节内容 1.shell简介 2. shell分类 3. 查看shell 4. 第一个shell脚本 5. shell编程常用命令   5.1 grep   5.2 cut   5.3 sort   ...

  4. 【.NET Core项目实战-统一认证平台】第十章 授权篇-客户端授权

    [.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章介绍了如何使用Dapper持久化IdentityServer4(以下简称ids4)的信息,并实现了sqlserver和mysql两种 ...

  5. CSS3背景,渐变

    1,有利于代码维护,有利于使用debug进行调试打断点.2,后面三个都存在计算,所以分开写最好.背景复合属性最好的写法,background:#abcdef url() no-repeat 50px ...

  6. JS 关于 bind ,call,apply 和arguments p8

    关于这3个货,网上有很多文章介绍,我这边还是记录下并加上自己的理解,还有arguments函数内置对象顺便也记录下: 简单的说apply和call 会绑定第一个参数的作用域给调用函数对象实例,并会执行 ...

  7. Chrome 插件——二维码生成笔记

    原来用了几个生成二维码的插件,总是遇见各种问题……最后索性自己弄一个,这里顺便记录一下. Chrome 插件很开放!!!你只要拿到了crx文件,然后把文件的后缀名改为zip,就可以解压了,最后一切的一 ...

  8. 万能pb_ds头文件—bits/extc++.h

    c++中自带了一些非常强大却鲜为人知的功能库—pd_ds库 里面含有红黑树(rb_tree),哈希表(gp_hash_table),可持久化平衡树(rope)等超强数据结构 但是有一件非常令人头痛的事 ...

  9. 从.Net到Java学习第十篇——Spring Boot文件上传和下载

    从.Net到Java学习系列目录 图片上传 Spring Boot中的文件上传就是Spring MVC中的文件上传,将其集成进来了. 在模板目录创建一个新的页面 profile/uploadPage. ...

  10. 让自定义view宽高成比例显示

    有时候我们自定义一个View,比如ImageView,我们需要让它宽高按照一定的比例显示,例如在ImageView在GridView中显示,GridView设置了3列,由于ImageVIew的宽度会根 ...