HDU1010
来源:互联网 发布:网络自制剧 编辑:程序博客网 时间:2024/04/29 19:59
结构体对象做参数,会比单独做参数要慢些,我还傻傻的TLE几十遍。。。。。。。。涨记性了。
另外,本体的考点应开始剪枝。。。
只有我这样的奇葩因为用结构体对象而超时。。。
#include <iostream>#include <cstring>#include <cmath>using namespace std;int dir[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};typedef struct{ int x; int y; int T;}point;point start, door;int maze[8][8], vis[8][8];int N, M, T;bool dfs(int x, int y, int t){ if(x == door.x && y == door.y){ if(t == T) return true; else return false; } int dis = abs(door.x - x) + abs(door.y - y); if((T-t-dis)%2) return false; if(dis + t > T){ return false; } vis[x][y] = 1; for(int i = 0; i < 4; i++){ if(vis[x+dir[i][0]][y+dir[i][1]] || !maze[x+dir[i][0]][y+dir[i][1]] || (x+dir[i][0] < 0 || x+dir[i][0] >= N) || (y+dir[i][1] < 0 || y+dir[i][1] >= M)) continue; if(dfs(x+dir[i][0], y+dir[i][1], t+1)) return true; } vis[x][y] = 0; return false;}int main(){ while(1){ cin >> N >> M >> T; if(!N || !M || !T) break; memset(vis, 0, sizeof(vis)); memset(maze, 0, sizeof(maze)); char temp; int wall = 0; for(int i = 0; i < N; i++) for(int j = 0; j < M; j++){ cin >> temp; if(temp == '.'){ maze[i][j] = 1; } else if(temp == 'S'){ start.x = i; start.y = j; }else if(temp == 'D'){ door.x = i; door.y = j; maze[i][j] = 1; } } bool answer = false; vis[start.x][start.y] = 1; answer = dfs(start.x , start.y, 0); if(answer) cout << "YES" << endl; else cout << "NO" << endl; } return 0;}
- hdu1010
- hdu1010
- HDU1010
- hdu1010
- hdu1010
- HDU1010
- hdu1010
- HDU1010
- HDU1010
- hdu1010
- hdu1010
- hdu1010
- hdu1010
- hdu1010
- hdu1010
- hdu1010
- hdu1010
- hdu1010
- ipcs命令和ipcrm命令介绍
- String与StringBuffer
- Spring3.0 AOP 详解
- HDU 1004 Let the Balloon Rise STL
- 进程间通信之FIFO
- HDU1010
- linux下操作数据库
- 大脑的秘密
- linux用户空间和内核空间的延时函数
- xml sax localName和qName的区别
- 解决eclipse不编译问题
- 递归转义
- Cloud Foundry 数据库连接
- tomcat源码分析之getParameter(String)与getQueryString()