洛谷 P1101 单词方阵
洛谷 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 单词方阵的更多相关文章
- 洛谷——P1101 单词方阵
https://www.luogu.org/problem/show?pid=1101#sub 题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放 ...
- 洛谷P1101 单词方阵——S.B.S.
题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间[color=red ...
- 洛谷P1101 单词方阵【暴力】【字符串】
题目描述 给一n×nn \times nn×n的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着 888 个方向的任一方向,同一单词摆放时不再改变方向, ...
- 洛谷P1101单词方阵
题目描述 给一n×n的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的. 摆放可沿着 8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间可以交叉,因此有 ...
- 洛谷P1101 单词方阵
题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着8个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间[color=red ...
- 洛谷P1101 单词方阵【DFS】
给一n \times nn×n的字母方阵,内可能蕴含多个"yizhong"单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着 88 个方向的任一方向,同一单词摆放时不再改变方向 ...
- 洛谷 P1101单词方阵
我已经,是这个世界上,最幸福的女孩了 ——<末日时 ...
- 集训作业 洛谷P1101 单词方阵
这个题的长度真的有点长,我直接放图片吧 这个题又是一个和谐的搜索,找到yizhong的y就开始8面搜索,遇见正确的字母就继续搜索,不正确就果断放弃,果然又是一个和谐的搜索呢. #include< ...
- 洛谷P1101 单词方针
题目描述 给一 n×n 的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着 88 个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间可以交叉, ...
随机推荐
- Docker系列06—基于容器制作镜像并上传到Docker Registry
本文收录在容器技术学习系列文章总目录 1.制作镜像 1.1 镜像的生成途径 基于容器制作 dockerfile,docker build 本篇主要详细讲解基于容器制作镜像:基于dockerfile 制 ...
- [二十五]JavaIO之RandomAccessFile
功能简介 我们之前一直说流顺序的,不能随机访问,的确之前说的IO体系的确如此 但是 RandomAccessFile自成一派 此类的实例支持对随机访问文件的读取和写入 我们之前介绍过DataOutpu ...
- java中变量的存储位置
1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符 ...
- Android Studio 1.1.0 比较有用的快捷键
格式化代码:Ctrl + Alt + L清除无效包引用 Alt + Ctrl + O折叠展开代码块 Ctrl + Plus/Minus折叠展开全部代码块 Ctrl + Shift + Plus,Min ...
- [C# 设计模式] Adapter - 适配器模式(两种)
Adapter - 适配器模式 序 现实生活中,我们常用到适配器. 你当前打开我这篇文章的笔记本电脑,电源的另一边不正连着一块适配器吗? 你平时想将三口插座插进二口插座里面,不也需要一个适配器吗? 整 ...
- Powerdesigner逆向工程64位Oracle数据库
Powerdesigner老版本不支持64位Client,新版本弄不到破解码 解决方法,用Powerdesigner+32位Oracle Clent访问64位Oracle Server 遇到的坑分享下 ...
- php-fpm 的优化
pid = /usr/local/php/var/run/php-fpm.pid error_log = /usr/local/php/var/log/php-fpm.log log_level = ...
- Java Scanner nextLine方法跳过
问题描述 Scanner使用了nextInt方法的时候,如果接下来要使用nextLine,会获取不到内容 原因 因为Scanner读取用户输入数据,是先判断缓冲区是否含有数据,没有则接收用户输入的数据 ...
- vue 中promise 异步请求数据
export function getTypes(type) { return listDictItems({ code: type }).then((res) => { if (res.cod ...
- 无依赖简单易用的Dynamics 365公共视图克隆工具
本人微信公众号:微软动态CRM专家罗勇 ,回复279或者20180818可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . Dy ...