zoj 2110 很好的dfs+奇偶剪枝
//我刚开始竟然用bfs做,不断的wa,bfs是用来求最短路的而这道题是求固定时间的
//剪纸奇偶剪枝加dfs
#include<stdio.h>
#include<queue>
#include<math.h>
#include<string.h>
using namespace std;
#define N 10
char ma[N][N];
struct node {
int x,y,step;
}ss,tt;
int dis[4][2]={1,0,-1,0,0,1,0,-1},n,m,t;
int vis[N][N];
int judge(int x,int y) {
if(ma[x][y]!='X'&&x>=1&&x<=n&&y>=1&&y<=m&&!vis[x][y])//刚开始这里少些!vis[x][y]导致wa
return 1;
return 0;
}
int dfs(int x,int y,int step) {
int xx,yy,st,i;
if(ma[x][y]=='D'&&step==t)return 1;
if(step>=t) return 0;
for(i=0;i<4;i++) {
xx=x+dis[i][0];
yy=y+dis[i][1];
st=step+1;
if(judge(xx,yy)) {
vis[xx][yy]=1;
if(dfs(xx,yy,st))return 1;
vis[xx][yy]=0;
}
}
return 0;
}
int main() {
int i,j,k;
while(scanf("%d%d%d",&n,&m,&t),n||m||t) {
for(i=1;i<=n;i++)
scanf("%s",ma[i]+1);
k=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++) {
if(ma[i][j]=='S') {
ss.x=i;
ss.y=j;
}
if(ma[i][j]=='D') {
tt.x=i;
tt.y=j;
}
if(ma[i][j]=='X')
k++;
}
if(n*m-k<t||(((int)fabs(tt.x-ss.x)+(int)fabs(tt.y-ss.y))%2!=t%2)) {
printf("NO\n");
continue;
}
memset(vis,0,sizeof(vis));
vis[ss.x][ss.y]=1;
if(dfs(ss.x,ss.y,0))
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
zoj 2110 很好的dfs+奇偶剪枝的更多相关文章
- hdoj--1010<dfs+奇偶剪枝>
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010 题目描述:在n*m的矩阵中,有一起点和终点,中间有墙,给出起点终点和墙,并给出步数,在该步数情况 ...
- HDU 1010 Tempter of the Bone(DFS+奇偶剪枝)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010 题目大意: 输入 n m t,生成 n*m 矩阵,矩阵元素由 ‘.’ 'S' 'D' 'X' 四 ...
- hdu.1010.Tempter of the Bone(dfs+奇偶剪枝)
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- hdu 1010:Tempter of the Bone(DFS + 奇偶剪枝)
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- 杭电1010(dfs + 奇偶剪枝)
题目: The doggie found a bone in an ancient maze, which fascinated him a lot. However, when he picked ...
- Tempter of the Bone(dfs奇偶剪枝)
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- Tempter of the Bone(dfs+奇偶剪枝)题解
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- HDU 1010:Tempter of the Bone(DFS+奇偶剪枝+回溯)
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- hdu1010Tempter of the Bone(dfs+奇偶剪枝)
题目链接:pid=1010">点击打开链接 题目描写叙述:给定一个迷宫,给一个起点和一个终点.问是否能恰好经过T步到达终点?每一个格子不能反复走 解题思路:dfs+剪枝 剪枝1:奇偶剪 ...
随机推荐
- [App Store Connect帮助]六、测试 Beta 版本(4.2) 管理 Beta 版构建版本:查看构建版本状态和指标
必要职能:“帐户持有人”职能.“管理”职能.“App 管理”职能.“开发者”职能或“营销”职能.请参见职能权限. 在首页上,点按“我的 App”,选择您的 App,然后在工具栏中点按“TestFlig ...
- Django day 33 vue中使用element-ui的使用,课程的相关介绍,vue绑定图片,课程列表接口,课程详情页面
一:vue中使用element-ui的使用, 二:课程的相关介绍, 三:vue绑定图片, 四:课程列表接口, 五:课程详情页面
- lodop打印图片
LODOP = getLodop(document.getElementById('LODOP_OB'), document.getElementById('LODOP_EM')); //LODOP. ...
- [BZOJ1331]魔板
Description 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 我们知道魔板的每一个方格都有一种颜色.这8 ...
- epoll IO多路复用(异步阻塞AIO)
epoll的异步阻塞(AIO): 用户线程创建epoll后,其实是内核线程负责扫描 fd 列表(在网络服务器上可以是socket,socket在创建后返回的也是文件描述符),并填充事件链表.但是,并不 ...
- 数据库恢复挂起解决办法【MSSQL】
新建查询输入如下代码运行 - -把test改成你需要修复的数据库名 USE master GO ALTER DATABASE test SET SINGLE_USER GO ALTER DATABAS ...
- jQuery学习笔记(3)-操作jQuery包装集的函数
一.前言 在使用jQuery选择器获取到jQuery包装集后,我们就要对这些包装集进行各种操作 二.创建新的元素 1.使用HTMLDOM创建元素 (1)什么是DOM 当网页被加载时,浏览器会创建页面的 ...
- 待销售分拣单App数据推送
管理待分拣商品的App的显示操作
- duilib属性
原文转载自:http://blog.csdn.net/lixiang987654321/article/details/45008441 这里我想讲解一下duilib中的一些属性的理解,当然这是一篇永 ...
- [ CodeForces 1059 D ] Nature Reserve
\(\\\) \(Description\) 你现在有\(N\)个分布在二维平面上的整点\((x_i,y_i)\),现在需要你找到一个圆,满足: 能够覆盖所有的给出点 与\(x\)轴相切 现在需要你确 ...