HUD 1175 连连看
连连看
Time Limit : 20000/10000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 522 Accepted Submission(s) : 119
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
玩家鼠标先后点击两块棋子,试图将他们消去,然后游戏的后台判断这两个方格能不能消去。现在你的任务就是写这个后台程序。
Input
注意:询问之间无先后关系,都是针对当前状态的!
Output
Sample Input
3 4
1 2 3 4
0 0 0 0
4 3 2 1
4
1 1 3 4
1 1 2 4
1 1 3 3
2 1 2 4
3 4
0 1 4 3
0 2 4 1
0 0 0 0
2
1 1 2 4
1 3 2 3
0 0
Sample Output
YES
NO
NO
NO
NO
YES
#include <iostream>
using namespace std;
long long map[][];
int v[][];
int n,m,flag;
int x1,y1,x2,y2;
int dir[][]={{-,},{,},{,},{,-}};
int safe(int a,int b)
{
if(a>n||b>m||a<=||b<=) return ;
return ;
}
void dfs(int si,int sj,int turn ,int direction)
{
int i;
if(si>n||sj>m||si<=||sj<=) return;
if(turn>) return;
if(turn<=&&si==x2&&sj==y2) {flag=;return;}
for(i=;i<;i++)
{
if(v[si+dir[i][]][sj+dir[i][]]==&&safe(si+dir[i][],sj+dir[i][]))
{
v[si+dir[i][]][sj+dir[i][]]=;
if(i==direction)
dfs(si+dir[i][],sj+dir[i][],turn,i);
else dfs(si+dir[i][],sj+dir[i][],turn+,i);//如果不是原来的方向就要turn+1
if(flag==) return;
v[si+dir[i][]][sj+dir[i][]]=;
} }
return;
}
int main()
{
while(cin>>n>>m)
{
if(n==||m==) return ;
int i,j;
for(i=;i<=n;i++)
{
for(j=;j<=m;j++)
{
cin>>map[i][j];
if(map[i][j]!=) v[i][j]=;
else v[i][j]=;
}
}
int t;
cin>>t; while(t--)
{
int a;
for(i=;i<=n;i++)
{
for(j=;j<=m;j++)
{
if(map[i][j]!=) v[i][j]=;
else v[i][j]=;
}
}
cin>>x1>>y1>>x2>>y2;
v[x2][y2]=;//终点要设为可走
if(map[x1][y1]!=map[x2][y2]) {cout<<"NO"<<endl;continue;}
if(map[x1][y1]==||map[x2][y2]==){cout<<"NO"<<endl;continue;}
if(x1==x2&&y1==y2){cout<<"NO"<<endl;continue;}
flag=;
for(a=;a<;a++)//开始因为方向未知,要从四个方向都是一次
{
dfs(x1,y1,,a);
if(flag)
{
cout<<"YES"<<endl;
break;
}
}
if(flag==) cout<<"NO"<<endl;
}
}
return ;
}
HUD 1175 连连看的更多相关文章
- HDU 1175 连连看(超级经典的bfs之一)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1175 连连看 Time Limit: 20000/10000 MS (Java/Others) ...
- HDU 1175 连连看
连连看 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- hdu - 1728逃离迷宫 && hdu - 1175 连连看 (普通bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1728 这两道题花了一下午的时候调试,因为以前做过类似的题,但是判断方向的方法是错的,一直没发现啊,真无语. 每个 ...
- HDU 1175 连连看(BFS)
连连看 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- hdu 1175 连连看 DFS
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1175 解题思路:从出发点开始DFS.出发点与终点中间只能通过0相连,或者直接相连,判断能否找出这样的路 ...
- Hdu 1175 连连看(DFS)
Problem地址:http://acm.hdu.edu.cn/showproblem.php?pid=1175 因为题目只问能不能搜到,没问最少要几个弯才能搜到,所以我采取了DFS. 因为与Hdu ...
- HDU 1175 连连看 (深搜+剪枝)
题目链接 Problem Description "连连看"相信很多人都玩过.没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子.如果某两个相同的棋子,可以 ...
- hdu 1175 连连看 (深搜)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1175 题目大意:如果某两个相同的棋子,可以通过一条线连起来(这条线不能经过其它棋子)这样的两个棋子可以 ...
- HDU - 1175 连连看 【DFS】【BFS】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1175 思路 这种题一想到就用搜索, 但是内存是32m 用 bfs 会不会MLE 没错 第一次 BFS的 ...
随机推荐
- hadoop IPC 源代码分析
如图所示, 在hadoop中客户端需要和服务端通信 . 首先我们看一下需求是啥. 举一个例子,在客户端想要往hadoop集群中写数据的时候,它需要先和namenode通信,以便获得 诸一 ...
- 2.2 C++类的成员变量和成员函数
参考:http://www.weixueyuan.net/view/6334.html 总结: 类成员的声明和定义: 类成员函数的定义分类内定义(内联)和类外定义(可用 inline 关键字 强制转换 ...
- apache的<directory> 语句以及属性的含义
在整完apache和tomcat的之后我觉得有必要把<directory>和它下面的属性捋顺一下 如何访问根目录下的目录http://192.168.1.12/test/ 第一.缺省apa ...
- mysql 聚合函数
1.sum 用法 有这种类型的数据: id date user_id result 1 2015-05-04 1 win 2 2015-05-06 1 loss 3 2015-05-09 2 loss ...
- 麻省理工大学新发明:暗黑WiFi透视技术
美国麻省理工学院(MIT)宣布,该大学的研究人员开发出了一种可以通过WiFi信号来检测人体移动情况的系统(Wi-Vi).据MIT介绍,该系统可以检测出钢筋混凝土墙壁背后的人体移动情况,其未来可以被作为 ...
- cocos2d-x中用到的一些宏
最近我们的cocos2d-x游戏项目已经进入了正式开发的阶段了,几个dev都辛苦码代码.cocos2d-x还是一套比较方便的api的,什么action啊.director啊.ccpoint啊都蛮便捷的 ...
- 15款Cocos2d-x游戏源码
(1)用cocos2d-x开发的中国象棋游戏源码 使用Cocos2d-X2.2.3开发的一款中国象棋游戏,游戏中可以实现.新局面.悔棋.游戏音乐.胜利后会显示游戏结果. 源码下载:http://www ...
- WebStrom 多项目展示及vuejs插件安装
2. Vuejs 插件安装: ① ②
- SWIFT Function
Swift中的函数跟JAVA语言的函数差不多,但也有差别,SWIFT中定义函数可以指定参数的名称这也是别的语言没有的,好处就是增加了可读性.其返回值是放在未尾的,如以下定义一个加法器: func ad ...
- Linux命令行操作进程
参见 12个进程管理命令介绍 Linux如何查看进程.杀死进程.启动进程等常用命令