hdu-1010-Tempter of the Bone(DFS+奇偶剪枝)
思路:剪枝+dfs
我们把map的奇偶性以01编号:
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。
也就是说,如果当前的狗所在的坐标与D的坐标奇偶性不一样,那么狗需要走奇数步。
同理,如果狗所在坐标与D的坐标奇偶性一样,那么狗需要走偶数步数。
也就是说,狗的坐标x、y和对2取余是它的奇偶性,Dxy和对2取余是D的奇偶性。
两个奇偶性一加再对2取余,拿这个余数去与剩下时间对2取余的余数作比较即可。
1 /* 2 Name:hdu-1010-Tempter of the Bone 3 Copyright: 4 Author: 5 Date: 2018/4/25 11:14:12 6 Description: 7 */ 8 #include <iostream> 9 #include <cstring> 10 #include <cstdio> 11 #include <algorithm> 12 using namespace std; 13 int n, m ,t, flag, ex, ey, sx, sy; 14 int dir[4][2] = {1,0,-1,0,0,1,0,-1}; 15 char map[10][10]; 16 int vis[10][10]; 17 void dfs(int x, int y, int steps) { 18 if (steps > t) return ; 19 if (x == ex && y == ey && steps == t) { 20 flag = 1; 21 return; 22 } 23 for (int i=0; i<4; i++) { 24 int xx = x + dir[i][0]; 25 int yy = y + dir[i][1]; 26 if (xx >= n || yy >=m || xx<0 || yy<0) continue; 27 if (map[xx][yy] == 'X' || vis[xx][yy]) continue; 28 vis[xx][yy] = 1; 29 dfs(xx, yy, steps+1); 30 vis[xx][yy] = 0; 31 if (flag) return ;//剪枝 32 } 33 } 34 int main() 35 { 36 // freopen("in.txt", "r", stdin); 37 while (cin>>n>>m>>t, n+m+t) { 38 getchar(); 39 memset(vis, 0, sizeof(vis)); 40 memset(map, 0, sizeof(map)); 41 flag = 0; 42 int wall = 0; 43 for (int i=0; i<n; i++) { 44 scanf("%s", map[i]); 45 for (int j=0; j<m; j++) { 46 if (map[i][j] == 'S') { 47 sx = i, sy =j; 48 } 49 if (map[i][j] == 'D') { 50 ex = i, ey =j; 51 } 52 if (map[i][j] == 'X') { 53 wall++; 54 } 55 } 56 } 57 if (abs(ex - sx) + abs(ey - sy) > t || (ex+ey+sx+sy+t)%2 == 1) {//路径剪枝+奇偶剪枝 58 cout<<"NO\n"; 59 continue; 60 } 61 if (n*m-wall < t) { 62 cout<<"NO\n"; 63 continue; 64 } 65 vis[sx][sy] = 1; 66 dfs(sx, sy, 0); 67 if (flag == 0) { 68 cout<<"NO\n"; 69 } else { 70 cout<<"YES\n"; 71 } 72 } 73 return 0; 74 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
2017-04-25 hdu--1429--胜利大逃亡(续) (bfs+状态压缩)