洛谷 P1101单词方阵
我已经,是这个世界上,最幸福的女孩了 ——《末日时在做什么,有没有空,可以来拯救吗?》
题目:https://www.luogu.org/problem/P1101
这一题开始我居然没看懂这是什么意思,我甚至以为是每一行一个判断,然后直接把我搞懵,直到被“基”房的某位道友:Old_fox 点拨了一下,我才搞懂这道题的意思。
这题主要就是说,一个矩阵,从每一个点,向八个方向去找,看能不能出现yizhong,最后把不能的全部变成*,很简单。
唯一需要注意的就是从每个点出发后,不能中途改变方向,所以——
在搜索外面先确定方向啊!
上代码:
#include<bits/stdc++.h>
using namespace std;
int dx[]={,,-,,-,,-,,};
int dy[]={,,,,-,-,,,-};
char a[][],ans[]={"yizhong"};
bool b[][]={false};
int n,h[][];
void dfs(int z,int x,int y,int t)//没有大循环的搜索,sao吧!
{
int xx=x+dx[z];
int yy=y+dy[z];
if(a[xx][yy]==ans[t])
{
h[t][]=xx;
h[t][]=yy;
if(t==)
for(int i=;i<=;i++)
b[h[i][]][h[i][]]=true;//置为1
else dfs(z,xx,yy,t+);
h[t][]=;
h[t][]=;
}
}
int main()
{
scanf("%d",&n);
for(int i=;i<n;i++) scanf("%s",a[i]);
for(int i=;i<n;i++)
{
for(int j=;j<n;j++)
{
if(a[i][j]=='y')//进入搜索的前提是当前值为y
{
for(int k=;k<=;k++)//判断方向
{
if(a[i+dx[k]][j+dy[k]]=='i')
{
h[][]=i;
h[][]=j;
dfs(k,i,j,);//把方向,当前坐标放入搜索
}
}
}
}
}
for(int i=;i<n;i++)
{
for(int j=;j<n;j++)
{
if(b[i][j]==true) printf("%c",a[i][j]);
else printf("*");
}
printf("\n");
}//输出
return ;
}
洛谷 P1101单词方阵的更多相关文章
- 洛谷 P1101 单词方阵
题目链接 https://www.luogu.org/problemnew/show/P1101 题目描述 给一n×n的字母方阵,内可能蕴含多个"yizhong"单词.单词在方阵中 ...
- 洛谷——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 单词方阵
这个题的长度真的有点长,我直接放图片吧 这个题又是一个和谐的搜索,找到yizhong的y就开始8面搜索,遇见正确的字母就继续搜索,不正确就果断放弃,果然又是一个和谐的搜索呢. #include< ...
- 洛谷P1101 单词方针
题目描述 给一 n×n 的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着 88 个方向的任一方向,同一单词摆放时不再改变方向,单词与单词之间可以交叉, ...
随机推荐
- 使用CXF实现WebService
一.首先创建一个maven项目,引入相应的jar包 <?xml version="1.0" encoding="UTF-8"?> <proje ...
- 阿里、网易和腾讯面试题 C/C++
一.线程.锁 1.Posix Thread互斥锁 线程锁创建 a.静态创建 pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; b.动态创建 pthr ...
- 【hdu 2544最短路】【Dijkstra算法模板题】
Dijkstra算法 分析 Dijkstra算法适用于边权为正的情况.它可用于计算正权图上的单源最短路( Single-Source Shortest Paths, SSSP) , 即从单个源点出发, ...
- C语言编程入门之--第五章C语言基本运算和表达式-part3
5.3 挑几个运算符来讲 常用的运算符除了加减乘除(+-*/)外,还有如下: 注意:以下运算符之间用逗号隔开,C语言中也有逗号运算符,这里不讲逗号运算符. 1. 赋值运算符 =,+=,*= 2. 一 ...
- 类spring ioc 泛型保留
类spring ioc 泛型保留 什么是泛型擦除 Java并不会传递泛型类,举个直观的栗子: @Component public class BaseProvider<T> { publi ...
- C语言的输入
%*2d%d 去掉前面两位 新旧函数 scanf和scanf_s 去掉安全检查 整型 scanf(“%d”,&x); scanf_s(“%d”,&x); 字符型 char ch; sc ...
- 《Java 8 in Action》Chapter 2:通过行为参数化传递代码
你将了解行为参数化,这是Java 8非常依赖的一种软件开发模式,也是引入 Lambda表达式的主要原因.行为参数化就是可以帮助你处理频繁变更的需求的一种软件开发模式.一言以蔽之,它意味 着拿出一个代码 ...
- 《C# 7.0核心技术指南》到货
前几天有大佬推荐本书,并且折扣相当的划算,随入手一本.
- 牛客网2016.4.11(两个数相加为sum/计数一个int型的二进制有多少个1/二叉树是否左右对称)
求最小的两个数相加为sum //求最小的两个数相加为sum public ArrayList<Integer> FindNumbersWithSum(int [] array,int su ...
- linux 7忘记密码找回
一.linux 7忘记密码二种更改方法 centos7/rhel7进入单用户方式和重置密码方式发生了较大变化,GRUB由b引导变成了ctrl+x引导.重置密码主要有rd.break和init两种方法. ...