博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdoj 1010 DFS +减枝
阅读量:4217 次
发布时间:2019-05-26

本文共 2013 字,大约阅读时间需要 6 分钟。

#include
#include
using namespace std;int sx,sy,ex,ey;int maze[10][10];char maze_in[10];int n,m,t;bool sol;int wall;int dir[4][2]= {
{1,0},{-1,0},{0,1},{0,-1}};void dfs(int x, int y, int k) { if(k > t || sol == true) return; if(k == t && x == ex && y == ey){ sol = true; return; } int tmp = t-k-abs(x-ex)-abs(y-ey); if(tmp < 0 || (tmp %2 == 1)) return; for(int i = 0; i < 4; i++ ){ int xx = x +dir[i][0]; int yy = y + dir[i][1]; if(xx >=0 &&xx
= 0&&y < m&&maze[xx][yy] == 1){ maze[xx][yy] = 0; dfs(xx,yy,k+1); maze[xx][yy] = 1; } } }int main() { while(scanf("%d%d%d",&n,&m,&t) && n){ sol = false; wall = 0; for(int i = 0; i < n; i++ ){ scanf("%s",maze_in); for(int j = 0; j < m; j++ ){ if(maze_in[j] == 'X'){ maze[i][j] = 0; wall++; } else{ maze[i][j] = 1; if(maze_in[j] == 'S'){ maze[i][j] = 0; sx = i; sy = j; } if(maze_in[j] == 'D'){ ex = i; ey = j; } } } } if(n*m-wall <= t || (abs(sx-ex)+abs(sy-ey) - t)%2 == 1 ){ cout << "NO\n"; continue; } dfs(sx,sy,0); if(sol) cout<<"YES\n"; else cout<<"NO\n"; } return 0; }
2、注意读取的时候直接找到S, D速度更快
#include
#include
#include
#include
using namespace std;char map[10][10];char maze[10];int n, m, t;int vis[10][10];int dir[4][2] = {
{1,0},{-1,0},{0,1},{0,-1}};int flag = 0;int sX,sY,dX,dY;int wal = 0;void dfs(int x, int y, int s) { if(flag == 1 || s > t) return; if(map[x][y] == 'D' && s == t){ flag = 1; return; } int tmp = t-s-abs(x-dX)-abs(y-dY); if(tmp < 0 || tmp %2 == 1){ return; } for(int i = 0; i < 4; i++ ){ int xx = x+dir[i][0]; int yy = y+dir[i][1]; if(xx >= 0&&yy>=0&&xx
t || (t-abs(sX-dX)-abs(sY-dY)) % 2 == 1){ cout <<"NO\n"; continue; } flag = 0; dfs(sX, sY, 0); if(flag) cout << "YES\n"; else cout << "NO\n"; } return 0; }


转载地址:http://olimi.baihongyu.com/

你可能感兴趣的文章
STM32开源代码——DS18B20
查看>>
STM32开源代码——光敏传感器
查看>>
STM32开源代码——UART串口程序
查看>>
个人项目——STM32接入机智云教程
查看>>
FreeRTOS学习笔记——FreeRTOS任务挂起和恢复实验
查看>>
人工智能学习笔记——案例实战信用卡欺诈检测(逻辑回归)
查看>>
FreeRTOS学习笔记——FreeRTOS 列表和列表项
查看>>
FreeRTOS学习笔记——任务壮态或信息查询与任务运行时间统计
查看>>
FreeRTOS学习笔记——FreeRTOS 系统内核控制函数
查看>>
FreeRTOS学习笔记——FreeRTOS 时间管理
查看>>
STemWin学习笔记——STemWin无操作系统移植
查看>>
STemWin学习笔记——在PC上仿真STemWin
查看>>
LwIP学习笔记——LwIP无操作系统移植
查看>>
LwIP学习笔记——RAW编程接口UDP实验
查看>>
STemWin学习笔记——文本显示
查看>>
STemWin学习笔记——数值显示
查看>>
STemWin学习笔记——2D绘图
查看>>
STemWin学习笔记——显示位图
查看>>
STemWin学习笔记——存储设备
查看>>
基于MATLAB/Simulink的电力电子电路仿真技术——Simulink仿真环境与模型库
查看>>