迷宫问题-坐标系解法
来源:互联网 发布:数据挖掘商业模型 编辑:程序博客网 时间:2024/05/12 21:39
/*Description 每组测试数据以三个整数N,M,T(0<n, m≤20, t>0)开头,分别代表迷宫的长和高,以及公主能坚持的天数。 紧接着有M行,N列字符,由".","*","P","S"组成。其中 "." 代表能够行走的空地。 "*" 代表墙壁,王子不能从此通过。 "P" 是公主所在的位置。 "S" 是王子的起始位置。 每个时间段里王子只能选择“上、下、左、右”任意一方向走一步。Prototype int SSaveP (int *maze[], int M, int n, int t)Input Param maze 迷宫布局(这里用二维数组实现布局) M 迷宫(数组)行数 N 迷宫(数组)列数 T 公主能坚持的天数Output Param 无Return Value 0 可以救出公主 -1 不可以救出公主*/#include<stdio.h> #include<string.h> #include<iostream>using namespace std;char map[22][22];bool flg;struct point { int x; int y; };point p[4] = {{0, 1},{0, -1},{1, 0},{-1, 0}}; void deep(point S, point P, int t) { if(flg) return; if (map[S.x][S.y] == 'P') { flg = true; return; } if (abs(S.x - P.x) + abs(S.y - P.y) > t) return; for (int i = 0; i < 4; i++) { if ( map[S.x + p[i].x][S.y + p[i].y] != '*'){map[S.x][S.y] = '*';S.x = S.x + p[i].x;S.y = S.y + p[i].y;deep(S, P, t - 1);S.x = S.x - p[i].x;S.y = S.y - p[i].y;map[S.x][S.y] = '.'; } } }int SSavep(char *visited, int t, int n, int m){ memset(map, '*', sizeof(char) * 22 * 22);flg = false;for (int i = 1; i <= m; i++){for (int j = 1; j <= n; j++){map[i][j] = *visited++;}}point S;point P;for (int i = 1; i <= m; i++){for (int j = 1; j <= n; j++){if (map[i][j] == 'S'){S.x = i;S.y = j;}if (map[i][j] == 'P'){P.x = i;P.y = j;}}}deep(S, P, t);if (flg)return 0;elsereturn -1;}
0 0
- 迷宫问题-坐标系解法
- 迷宫问题解法汇总
- 迷宫问题-深度遍历解法
- 迷宫问题C语言解法
- C++ 迷宫问题的回溯解法
- POJ 3984 迷宫问题 广搜迷宫解法
- 回溯法解迷宫问题的两个解法
- 迷宫问题之图深度优先遍历解法
- 项目5-- 迷宫问题之图深度优先遍历解法
- 项目5 - 迷宫问题之图深度优先遍历解法
- 迷宫问题之图深度优先遍历解法
- 项目5-- 迷宫问题之图深度优先遍历解法
- POJ 3984 迷宫问题 BFS DFS两种解法
- 迷宫问题的通用解法C语言数据结构实现
- 迷宫 DFS 递归 解法
- 迷宫 DFS 递归 解法
- 迷宫解法之栈/队列的解法
- 迷宫---DFS和BFS解法
- 待字闺中之相差最大分析
- Hadoop集群(第4期)_SecureCRT使用
- Target runtime Apache Tomcat 6.0 is not defined 错误解决
- GitHub上分享和展示你的代码
- 类向导错误
- 迷宫问题-坐标系解法
- SharePoint 2010 自定义字段开发
- 设计模式之六大基本原则
- 50题(ACM学习推荐题)
- Hadoop集群(第5期)_Hadoop安装配置
- linux命令dd
- ubunut下C编程
- HDOJ 1008 Elevator
- exit和return的区别