深度搜索,注意要剪枝

1.奇偶剪枝

  可以把map看成这样:
  0 1 0 1 0 1
  1 0 1 0 1 0
  0 1 0 1 0 1
  1 0 1 0 1 0
  0 1 0 1 0 1
  从为 0 的格子走一步,必然走向为 1 的格子
  从为 1 的格子走一步,必然走向为 0 的格子
  即:
  0 ->1或1->0 必然是奇数步
  0->0 走1->1 必然是偶数步
 
则如果((di-si+dj-sj)&1)!=(t&1) 就可以直接输出“NO”了
 
2.判断可走的block是否小于时间总数
  n*m-wall<=t  就输出“NO”
 #include <iostream>
#include <stdio.h>
using namespace std; char map[][];
int desc[][]={{-,},{,},{,},{,-}};
int si,sj,di,dj;
int n,m,t;
int escape; void dfs(int ni,int nj,int nt)
{
if(escape) return;
if(nt>t) return;
else if(nt==t)
{
if(ni==di && nj==dj)
{
printf("YES\n");
escape=;
}
return;
}
else
{
for(int k=;k<;++k)
{
if(ni+desc[k][]>-&&ni+desc[k][]<n && nj+desc[k][]>-&&nj+desc[k][]<m)
{
if(map[ni+desc[k][]][nj+desc[k][]]!='X')
{
map[ni][nj]='X';
//printf("goto (%d,%d) %d\n",ni+desc[k][0],nj+desc[k][1],nt+1);
dfs(ni+desc[k][],nj+desc[k][],nt+);
map[ni][nj]='.';
}
}
}
}
} int main()
{
int i,j,wall; while(scanf("%d %d %d",&n,&m,&t),n||m||t)
{
escape=;
di=;
dj=;
wall=;
getchar();
for(i=;i<n;++i)
{
for(j=;j<m;++j)
{
//scanf("%c",&map[i][j]);
cin>>map[i][j];
if(map[i][j]=='S')
{
si=i;
sj=j;
}
else if(map[i][j]=='D')
{
di=i;
dj=j;
}
else if(map[i][j]=='X') ++wall;
}
//getchar();
} //前半句是判断可以走的block数是否小于等于时间;
//后半句是奇偶剪枝
if(n*m-wall<=t || ((di-si+dj-sj)&)!=(t&))
{
printf("NO\n");
continue;
}
dfs(si,sj,);
if(escape==) printf("NO\n");
}
}

HDOJ 1010的更多相关文章

  1. hdoj--1010<dfs+奇偶剪枝>

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010 题目描述:在n*m的矩阵中,有一起点和终点,中间有墙,给出起点终点和墙,并给出步数,在该步数情况 ...

  2. HDU 1010 Tempter of the Bone(DFS+奇偶剪枝)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010 题目大意: 输入 n m t,生成 n*m 矩阵,矩阵元素由 ‘.’ 'S' 'D' 'X' 四 ...

  3. 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 ...

  4. 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 ...

  5. 杭电1010(dfs + 奇偶剪枝)

    题目: The doggie found a bone in an ancient maze, which fascinated him a lot. However, when he picked ...

  6. 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 ...

  7. hdu1010Tempter of the Bone(dfs+奇偶剪枝)

    题目链接:pid=1010">点击打开链接 题目描写叙述:给定一个迷宫,给一个起点和一个终点.问是否能恰好经过T步到达终点?每一个格子不能反复走 解题思路:dfs+剪枝 剪枝1:奇偶剪 ...

  8. Tempter of the Bone(dfs奇偶剪枝)

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  9. Tempter of the Bone(dfs+奇偶剪枝)题解

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  10. M - Tempter of the Bone(DFS,奇偶剪枝)

    M - Tempter of the Bone Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & % ...

随机推荐

  1. Android(java)学习笔记230:服务(service)之绑定服务的细节

    绑定服务的细节 1. 如果onbind方法返回值是null,onServiceConnect方法就不会被调用: 2. 绑定的服务,在系统设置界面,正在运行条目是看不到的: 3. 绑定的服务,不求同时生 ...

  2. ansible小结

    一.Ansible的安装 1.yum源安装 以centos为例,默认在源里没有ansible,不过在fedora epel源里有ansible,配置完epel 源后,可以直接通过yum 进行安装.这里 ...

  3. javaScript特效

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  4. asp.net学习之DataList控件

    asp.net学习之DataList控件   DataList控件与Repeater控件一样由模板驱动,与Repeater控件不同的是: DataList控件默认输出是一个HTML表格.DataLis ...

  5. HDU5289

    题意:求解存在最大差值小于给定K值的所有区间段. 输入: T(测试数据) n(数组个数)K(给定区间值的范围) ai...(数组值) 输出: ss(所有满足符合条件的区间段) 思路:二分+ST算法,首 ...

  6. 使用Javascript限制文本框只允许输入数字

    很多时候需要用到限制文本框的数字输入,试过许多方法,都不太理想,遂决定自己实现一个来玩玩.曾经使用过的方法通过onkeydown事件来控制只允许数字: <input onkeydown=&quo ...

  7. MySQL中TIMESTAMP和DATETIME区别

    1.两者的存储方式不一样 TIMESTAMP:把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储.查询时,将其又转化为客户端当前时区进行返回. DATETIME:不做任何改变,基本上是原 ...

  8. webApp禁止用户保存图像

    img { -webkit-touch-callout: none; }

  9. Ext4.1 grid 多选(可无checkbox)

    转载 在Ext4.1中的grid默认只能实现单选的. 如果你想要你的grid有多选功能,需要给grid增加selModel 如果你使用了Ext.create('Ext.selection.Checkb ...

  10. sqlserver 将多行数据查询合并为一条数据

    有这样一个需求:表T_FUN_TASK为任务表,有字段(TASKID,TASKNAME),表T_FUN_LOGBOOK为日志表,有字段(LOGID,TASKID,LOGDATE),一个任务可持续多天, ...