hdu1010】的更多相关文章

#include <stdio.h>#include <iostream>#include <string.h>#include <stdlib.h>using namespace std;int n,m,t,ax,bx;bool flag;char plot[9][9];int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};void dfs(int a,int b,int tx){ if(a<=0||a>n||b&…
题目来源:HDU1010 DFS的基本原则已经差不多了,但是一些技巧仍然比较难想,所以还是加强练习,然后总结一下. 还是先看题意 ,指定迷宫的长,宽以及走出迷宫的具体时间N,M,T. 其中(1 < N, M < 7; 0 < T < 50). 在这个迷宫中,从起点 ‘S’ 出发,每经过一个格子就花费一秒,不可掉头. 而要做的就是判断是否有一条从起点到终点 ‘D’ 的路恰好花费T秒. 如果有就输出YES,否则就是NO了. 再看代码: #include<stdio.h> #…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010 Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 131057    Accepted Submission(s): 35308 Problem Description The doggie fou…
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 110290    Accepted Submission(s): 29967 Problem Description The doggie found a bone in an ancient maze, which fascinated him a…
Tempter of the Bone Problem Description The doggie found a bone in an ancient maze, which fascinated him a lot. However, when he picked it up, the maze began to shake, and the doggie could feel the ground sinking. He realized that the bone was a trap…
做1010  本来是想的DFS深搜  但是自己凭空打  打不出来  因为没有记模板  然后就去搜  但是看了一遍  自己打却又是有BUG  然后验证  就出现了一个二维字符数组打印的问题 开始代码是这样 #include<stdio.h> void main() { ][]; int i,j; ; i<; i++) { //fflush(stdin); ; j<; j++) { scanf("%c",&a[i][j]); } } ; i<; i++…
解题思路:相当经典的一题,回溯,具体细节处理见代码. #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; ; ][] = {, , -, , , , , -}; char mapp[maxn][maxn]; int n, m, t, flag, cnt, si, sj, di, dj; void DFS(int x, int y…
思路: 剪枝的思路参考博客:http://www.cnblogs.com/zibuyu/archive/2012/08/17/2644396.html  在其基础之上有所改进 题意可以给抽象成给出一个图,让你求S点到D点之间是否存在一条长度为T的道路.求两地之间的距离用的是dfs,而dfs在这里的关键是找到回溯的条件,就是当到达D点并且剩余步数为0时,则符合题意的要求,由于我们只需要知道这样一条长度为T的路径是否存在,因此当我们发现存在的时候,只需要将一个全局flag给设置为1即可,然后从此之后…
题意:输入一个n*m的迷宫,和一个T:可以在迷宫中生存的最大时间.S为起点,D为终点.并且,每个格子只能踩一次,且只能维持一秒,然后该块地板就会塌陷.所以你必须每秒走一步,且到D点时,所用时间为T. TIPS:可以在中途某个点就能通过x+y的奇偶性与剩余时间的奇偶性判定  能否到D ,达到剪枝的目的. 代码如下 #include <cstdio> #include <cstring> #include <iostream> #include <stdlib.h&g…
题意  一仅仅狗要逃离迷宫  能够往上下左右4个方向走  每走一步耗时1s  每一个格子仅仅能走一次且迷宫的门仅仅在t时刻打开一次  问狗是否有可能逃离这个迷宫 直接DFS  直道找到满足条件的路径  或者走全然部可能路径都不满足 注意剪枝  当前位置为(r,c)  终点为(ex,ey) 剩下的时间为lt  当前点到终点的直接距离为  d=(ex-r)+(ey-c)   若多走的时间rt=lt-d<0 或为奇数时  肯定是不可能的  能够自己在纸上画一下 每一个点仅仅能走一次的图  走弯路的话多…