题目

福克斯在玩一款手机解迷游戏,这个游戏叫做”两点”。基础级别的时候是在一个n×m单元上玩的。像这样:

每一个单元有包含一个有色点。我们将用不同的大写字母来表示不同的颜色。

这个游戏的关键是要找出一个包含同一颜色的环。看上图中4个蓝点,形成了一个环。一般的,我们将一个序列 d1,d2,...,dk 看成一个环,当且仅当它符合下列条件时:

1.    这k个点不一样,即当 i≠j时, di 和 dj不同。

2.    k至少是4。

3.    所有的点是同一种颜色。

4.    对于所有的 1≤i≤k-1: di 和 di+1 是相邻的。还有 dk 和 d1 也应该相邻。单元 x 和单元 y 是相邻的当且仅当他们有公共边。

当给出一幅格点时,请确定里面是否有环。

输入

单组测试数据。

第一行包含两个整数n和m (2≤n,m≤50):板子的行和列。

接下来n行,每行包含一个有m个字母的串,表示当前行每一个点的颜色。每一个字母都是大写字母。

输出

如果有环输出Yes,否则输出No。

输入样例

3 4
AAAA
ABCA
AAAA
3 4
AAAA
ABCA
AADA

输出样例

Yes
No

思路:dfs 判环,注意搜索过程中的判断条件,除了步数要大于等于 4 外,从一个点走到下一个点时,下一个点不能再走回上一个点

源程序

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<bitset>
#define EPS 1e-9
#define PI acos(-1.0)
#define INF 0x3f3f3f3f
#define LL long long
const int MOD = 1E9+7;
const int N = 500+5;
const int dx[] = {-1,1,0,0,-1,-1,1,1};
const int dy[] = {0,0,-1,1,-1,1,-1,1};
using namespace std;
int n,m;
char G[N][N];
bool vis[N][N];
bool flag;
void dfs(int x,int y,int prox,int proy,int step){if(flag)return;for(int i=0;i<4;i++){int nx=x+dx[i];int ny=y+dy[i];if(vis[nx][ny]){if(nx!=prox||ny!=proy){if(step>=4){flag=true;return;}}}if(nx>=0 && nx<n && ny>=0 && ny<m && !vis[nx][ny] && G[nx][ny]==G[x][y] ){vis[nx][ny]=true;dfs(nx,ny,x,y,step+1);vis[nx][ny]=false;}}
}
int main() {while(scanf("%d%d",&n,&m)!=EOF){for(int i=0;i<n;i++){getchar();for(int j=0;j<m;j++){char ch;scanf("%c",&ch);G[i][j]=ch;}}flag=false;memset(vis,false,sizeof(vis));for(int i=0;i<n;i++){if(flag)break;for(int j=0;j<m;j++){if(flag)break;if(!vis[i][j]){vis[i][j]=true;dfs(i,j,0,0,1);vis[i][j]=false;}}}if(flag)printf("Yes\n");elseprintf("No\n");}return 0;
}

两点(51Nod-1416)相关推荐

  1. 【51Nod - 1416】两点 (dfs 或 并查集+dfs)

    题干: 福克斯在玩一款手机解迷游戏,这个游戏叫做"两点".基础级别的时候是在一个n×m单元上玩的.像这样:     每一个单元有包含一个有色点.我们将用不同的大写字母来表示不同的颜 ...

  2. 两点(51nod 深搜)

    福克斯在玩一款手机解迷游戏,这个游戏叫做"两点".基础级别的时候是在一个n×m单元上玩的.像这样: 每一个单元有包含一个有色点.我们将用不同的大写字母来表示不同的颜色. 这个游戏的 ...

  3. 51nod 1737 配对 【树形dp】

    题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1737 题意: 给出一棵n个点的树,将这n个点两两配对,求所有可行的 ...

  4. 51nod 2621 树上距离 (倍增+ LCA 模板)

    51nod 2621 树上距离 (倍增+ LCA 模板) 有一棵n个节点的无向树,每条边有一个边权,现在有q次询问,每次询问给出两个点,求这两个点之间的简单路径上的边权和是多少. 输入格式 第1行:两 ...

  5. 51nod 1617 奇偶数组

    传送门 回来看一眼51nod,发现自己掉到rank4了,赶紧切道题回rank3. 一眼不会做,这种东西应该慢慢找规律吧--然后看到数据范围其实比较小,应该是单次log的,那是不是可以分治啊. #inc ...

  6. 已知空间一点到另外两点直线的距离

    转自:http://www.cnblogs.com/clarkustb/archive/2008/11/04/1326500.html 已知空间一点到另外两点直线的距离 设空间中的三点为M1,M2,M ...

  7. Erlang之父给程序员的两点忠告 | 缅怀

    整理 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 北京时间 4月20日,据Erlang Solutions.Erlang Factories的创始人Francesco Cesarini的 ...

  8. 51NOD 1773:A国的贸易——题解

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1773 参考1:FWT讲解 https://www.cnblogs.com ...

  9. 图论 ---- F. The Shortest Statement (最短路的性质 + 任意两点间最短路 + 图转树)

    题目链接 题目大意: 给你一个nnn个点mmm条边的无向图,就是动态询问任意两点间的最短路 n,m∈[1,1e5],m−n≤20n,m\in[1,1e5],m-n\leq20n,m∈[1,1e5],m ...

  10. 科大讯飞公然吹捧“凌晨两点边工作边哄娃”的“奋斗文化”,引发网友极度不适!...

    近日,有网友发帖爆料科大讯飞在其公众号中发布的文章<太飒了!这位讯飞之星有点"狠">中,公然吹捧过度加班的奋斗文化,暴露其严重扭曲的价值观! 这篇文章宣扬其员工&quo ...

最新文章

  1. Linux环境编程--进程
  2. 初识FPGA CLB之LUT实现逻辑函数
  3. Objective-C学习—UIWebView的使用
  4. python简单入门_Python简明入门教程
  5. GitHub发布开源项目指南,以帮助更多开发者参与开源
  6. 作用域,上下文,闭包
  7. boost::container模块实现检查相等的容器的测试程序
  8. Spring Web MVC 随笔
  9. FFMpeg中apiexample.c例子分析——编码分析
  10. wpf xaml突然不能自动补齐代码_Xaml+C#桌面客户端跨平台初体验
  11. 移动开发解决方案之玩转输入框
  12. maven2打包不同jdk版本的包
  13. ShaderForge - 纹理水平垂直翻转
  14. 微信小程序之分包加载
  15. Python flask实战订餐系统微信小程序-16后台管理系统其他页面调整
  16. WPF Binding表达式
  17. 知道一点怎么设直线方程_两点直线方程怎么求
  18. 论文翻译 | RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds
  19. java软件开发培训班靠谱吗?好找工作吗?
  20. Gos ——BIOS与继承者MBR

热门文章

  1. JavaEE实战班第19天
  2. 你可能被网帖骗了:中国粗离婚率的15连涨已在2018年被终结了
  3. 致程序猿:专业课老师没教的,都在这8本书里了
  4. Simulink之多重逆变电路
  5. 数据可视化及数据保存
  6. python安装目录结构_python软件目录结构规范
  7. 官方认证:软件及信息技术从业者为新生代农民工
  8. 分布式事务架构设计原理
  9. 出身寒门的程序员,如何改变命运?
  10. 【JEECG技术博文】jeecg 定时任务配置用法