HDU1175(dfs)
连连看
Time Limit:10000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
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 搜索,也可以用枚举
1 //2016.8.20 2 #include<iostream> 3 #include<cstdio> 4 #include<cstring> 5 6 using namespace std; 7 8 int mp[1005][1005], book[1005][1005]; 9 int dx[4] = {0, 1, 0, -1}; 10 int dy[4] = {1, 0, -1, 0}; 11 int n, m, x2, y2; 12 bool ok, fg; 13 14 void dfs(int x, int y, int pd, int tt)//pd表示上一次的方向,tt表示转折的次数 15 { 16 if(tt>3)return ; 17 if(x == x2 && y == y2) 18 { 19 cout << "YES" << endl; 20 ok = true; 21 return ; 22 } 23 if(x<1||x>n||y<1||y>m||mp[x][y]!=0)return; 24 if(ok)return ; 25 book[x][y] = 1; 26 for(int i= 0; i < 4; i++) 27 { 28 int nx = x+dx[i]; 29 int ny = y+dy[i]; 30 if(book[nx][ny]==1)continue; 31 if(i != pd) 32 dfs(nx, ny, i, tt+1); 33 else 34 dfs(nx, ny, i, tt); 35 book[nx][ny] = 0; 36 } 37 } 38 int main() 39 { 40 int q, x1, y1; 41 while(cin>>n>>m) 42 { 43 if(n==0&&m==0)break; 44 for(int i = 1; i <= n; i++) 45 for(int j = 1; j <= m; j++) 46 scanf("%d", &mp[i][j]); 47 48 cin >> q; 49 while(q--) 50 { 51 scanf("%d%d%d%d", &x1, &y1, &x2, &y2); 52 memset(book, 0, sizeof(book)); 53 if(mp[x1][y1]==mp[x2][y2]&&mp[x1][y1]&&mp[x2][y2]&&x1>=1&&y1>=1&&x1<=n&&y1<=m&&x2>=1&&y2>=1&&x2<=n&&y2<=m)//剪枝 54 { 55 ok = false; 56 int tmp = mp[x1][y1]; 57 mp[x1][y1] = 0; 58 dfs(x1, y1, -1, 0); 59 mp[x1][y1] = tmp; 60 if(!ok)cout << "NO" << endl; 61 }else 62 { 63 cout << "NO" <<endl; 64 } 65 } 66 } 67 68 return 0; 69 }
转载于:https://www.cnblogs.com/Penn000/p/5791280.html
HDU1175(dfs)相关推荐
- HDU1175 连连看【DFS】
连连看 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...
- HDU1175 连连看【DFS+剪枝】
连连看 题意: 给定一个n*m的连连看的图,有q次操作,问点击(sx,sy)与(ex,ey)能否使方格消失(!!但是,就算可以消失,也不能改变原图,这q次操作相互之间没有联系).消失的条件详见题目. ...
- 【hdu1175】连连看——dfs(剪枝)
题目: 连连看 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- [JS][dfs]题解 | #迷宫问题#
题解 | #迷宫问题# 题目链接 迷宫问题 题目描述 定义一个二维数组 N*M ,如 5 × 5 数组下所示: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 1, 1 ...
- [C] [编程题]连通块(DFS解决)
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 256M,其他语言512M 来源:牛客网 金山办公2020校招服务端开发工程师笔试题(一) 题目描述 给一个01矩阵,1代表是陆地,0代表 ...
- 【BZOJ2434】[NOI2011]阿狸的打字机 AC自动机+DFS序+树状数组
[BZOJ2434][NOI2011]阿狸的打字机 Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P ...
- usaco snail trails(dfs)
dfs啊,我还写了好长时间,一天不如一天. /* ID:jinbo wu TASK: snail LANG:C++ */ #include<bits/stdc++.h> using nam ...
- usaco shuttle puzzle(dfs剪枝)
这题一看我也以为找规律,然后无法下手之后又想到bfs最后看题解是用dfs大神dfs用的出神入化. 不过这题好像可以找规律. /* ID:jinbo wu TASK: shuttle LANG:C++ ...
- usaco street race(dfs)
一开始我觉得很麻烦但第一题好做由于数据较小直接每个点删后dfs就可以了,第二问我不知道如何判断有没有公共的道路,最后看别人的也挺简单的就是看分别从两条公路的起点开始dfs如果他们能到达同一点就代表有公 ...
最新文章
- 基于海康机器视觉算法平台的对位贴合项目个人理解 | CSDN原力计划
- Spring Cloud第九篇:链路追踪Sleuth
- KafKa集群安装、配置
- Linux系统下使用桥接模式,无法ping通外网解决问题方案!
- 板子armv7_32怎么挂载windows文件夹?
- alpinestars与丹尼斯_胖摩的骑行路 篇四:真的值到了—丹尼斯MOTORSHOE AIR骑行靴...
- 第一章 1 常用库之time
- MyBatis(三)
- 无人驾驶遇见人工智能 百度将推有“大脑”的汽车
- jq中ajax请求跨域,用JQuery实现简单的Ajax跨域请求
- java 字符串contain_如何使用java.lang.String.contains()方法
- 大话西游之程序员做项目
- python gui控件案例_python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例...
- 结构优化设计with OPtiStruct
- 基于PCNN的图像增强matlab代码
- EXT2文件系统实现原理
- 微信app支付签名错误
- 一个人流浪,不必去远方
- Java--Files
- 因《C程序设计伴侣》的争执,谈谭浩强《C程序设计》的批评
热门文章
- 不同服务器数据库之间的数据操作
- java程序设计_Java程序设计-类和对象(笔记)
- 文献阅读High-throughput sequencing of the transcriptome and chromatin accessibility in the same cell
- 数据结构设计_数据结构算法设计题学起来很困难怎么破
- java restclient 调用_restclient 访问 springmvc java工程接口
- mysql innodb启动失败_关于mysql innodb启动失败无法重启的处理方法讲解
- 不同编译单元内的非局部静态对象的初始化次序问题
- osea/Beat Classification 4.3-4.5
- 文献查找网站集合(自用)
- Linux主要的系统目录及其简单描述