连连看

Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 34807 Accepted Submission(s): 8657

Problem Description
“连连看”相信很多人都玩过。没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子。如果某两个相同的棋子,可以通过一条线连起来(这条线不能经过其它棋子),而且线的转折次数不超过两次,那么这两个棋子就可以在棋盘上消去。不好意思,由于我以前没有玩过连连看,咨询了同学的意见,连线不能从外面绕过去的,但事实上这是错的。现在已经酿成大祸,就只能将错就错了,连线不能从外围绕过。
玩家鼠标先后点击两块棋子,试图将他们消去,然后游戏的后台判断这两个方格能不能消去。现在你的任务就是写这个后台程序。

Input
输入数据有多组。每组数据的第一行有两个正整数n,m(0

#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
using namespace std;
struct node
{int a,b,num;
}as,t,h;
int w[1001][1001];//储存 连连看数据
int w1[1001][1001];//标记是否走过
int k,n,m,l;
int x,y,e,f;
int dir[4][2]={{-1,0},{0,1},{1,0},{0,-1}};
void dfs()
{queue<node>q;q.push(h);//判断连连看 一个数据入队w1[x][y]=1;//标记while(!q.empty()){as=q.front();q.pop();for(int i=0;i<4;i++)//向四个方向搜索{t.a=as.a+dir[i][0];t.b=as.b+dir[i][1];t.num=as.num;while(w[t.a][t.b]==0&&t.a>=1&&t.a<=n&&t.b>=1&&t.b<=m&&t.num<3&&w1[t.a][t.b]==0){//在满足条件的情况下(w【t.a】【t.b】=0且不出境和没有搜索过)可以不计步数w1[t.a][t.b]=1;//标记状态t.num+=1;//计步 以便入队 向别的方向搜索q.push(t);t.num-=1;//你懂的 (⊙o⊙)t.a+=dir[i][0];t.b+=dir[i][1];}if(t.a==e&&t.b==f&&t.num<3)//到达另一个且步数小于等同于2{cout<<"YES"<<endl;return ;}}}cout<<"NO"<<endl;return ;
}
int main()
{while(cin>>n>>m){if(n==0&&m==0)break;memset(w,0,sizeof(w));for(int i=1;i<=n;i++){for(int j=1;j<=m;j++)cin>>w[i][j];}cin>>l;while(l--){cin>>x>>y>>e>>f;memset(w1,0,sizeof(w1));if(w[x][y]!=w[e][f])//俩个不相同 就没必要搜索了cout<<"NO"<<endl;else if(x==e&&y==f)//俩个是一个 就等没必要搜索了cout<<"NO"<<endl;else if(w[x][y]==0&&w[e][f]==0)//空白就更没必要了cout<<"NO"<<endl;else{h.a=x;h.b=y;h.num=0;dfs();}}}return 0;
}

转载于:https://www.cnblogs.com/nanfenggu/p/7900183.html

杭电1175简单搜索 连连看相关推荐

  1. java 杭电1237简单计算器

    简单计算器 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  2. 【ACM】杭电OJ 1241(深度优先搜索小结)

    题目链接:杭电OJ 1241 深度优先搜索问题 深度优先搜索是搜索的手段之一.它从某个状态开始,不断地转移状态直到无法转移,然后回退到前一步的状态,继续转移到其他状态,如此不断重复,直至找到最终的解. ...

  3. java最简单的并查集(不想交集合)以及杭电1272

    并查集要有的一些属性:value:表示当前值,指针:(不一定是指针)指向父节点. 还有一个属性number:表示该树存在的总个数.(也可以用深度表示).我用小树插在大树上. 如果是普通数字表示的树,可 ...

  4. 杭电oj 1426 Sudoku Killer(深度优先搜索 回溯)

    Sudoku KillerTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...

  5. 最详细最简单:最大公因数求法、辗转相除法、更相减损法,入门ACM,杭电水题,算法递归,初级算法题一看就懂

    文章目录 前言 一.名称定义 1.最大公约数 2.辗转相除法 3.更相减损法 二.ACM杭电入门题 1.解题思路 三.解题参考代码(C语言,C++) 0.最优算法(C++) 1.辗转相除求解(C语言) ...

  6. 杭电OJ分类题目(1)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...

  7. hdoj杭电问题分类

    杭电上的题虽然多,但是一直苦于找不到问题分类,网页都是英文的,所以平时做题也没怎么看,今天仔细一看,问题分类竟然就在主页....做了那么久的题居然没发现,表示已经狗带..不要笑,不知道有没有像我一样傻 ...

  8. 杭电ACM(HDUOJ)试题分类

    杭电ACM试题分类 第一篇 1001 这个就不用说了吧                      1002 简单的大数                            1003 DP经典问题,最 ...

  9. 杭电acm第2304题答案c语言,【转】杭电ACM试题分类

    注:网上搜的 第一篇 1001 这个就不用说了吧 1002 简单的大数 1003 DP经典问题,最大连续子段和 1004 简单题 1005 找规律(循环点) 1006 感觉有点BT的题,我到现在还没过 ...

最新文章

  1. JPEG原理分析及JPEG解码器的调试
  2. 2019最全BAT资深Java面试题答案合集,建议收藏~
  3. 如何提取明细表头_如何在实际操作中应用偏移修剪?
  4. linux的sendmail服务有啥用,Linux的SendMail服务
  5. 手机MODEM开发(31)---LTE 速率低
  6. mysql排插问题_手把手教你分析 MySQL 死锁问题
  7. NSString的retainCount
  8. Java环境变量配置
  9. 让自己的软件出现在选择打开列表的软件中
  10. php图片资源管理软件,通用图形资源管理与查询系统FastMap - 飞时达软件
  11. Cisco Packet Tracer交换机划分VLAN
  12. 强制删除“无法删除文件/文件夹”方法全集合
  13. C语言实现银行管理系统
  14. 前端架构设计应该包含哪些东西?
  15. Gatekeeper代码导读
  16. Unity学习笔记 关于TextMeshPro(TMP) 字体大小FontSize单位说明
  17. 怎样处理 Safari 移动端对图片资源的限制
  18. 1454E - Number of Simple Paths
  19. 功能安全产品开发初始分析 | 功能分析
  20. 最全“乐视三合一奥比中光Orbbec Astra Pro体感摄像头”标定全过程(1)

热门文章

  1. Ubuntu环境变量
  2. java中的Random()注意!
  3. javascript断点调试方法
  4. Python天天美味(35) - 细品lambda
  5. 玻璃上的编码喜悦(+ 10史诗般的Epigrams)
  6. 输入vue ui没反应
  7. 1115 Counting Nodes in a BST
  8. Python培训教程分享:Python异常机制
  9. 一些常用工具地址,随时更新中~
  10. 以太坊代币空投合约的实现