DFS-地图
来源:互联网 发布:js获取表单提交的数据 编辑:程序博客网 时间:2024/06/06 04:39
穿越雷区
X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废。
某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征),怎样走才能路径最短?
已知的地图是一个方阵,上面用字母标出了A,B区,其它区都标了正号或负号分别表示正负能量辐射区。
例如:
A + - + -
- + - - +
- + + + -
+ - + - +
B + - + -
坦克车只能水平或垂直方向上移动到相邻的区。
数据格式要求:
输入第一行是一个整数n,表示方阵的大小, 4<=n<100
接下来是n行,每行有n个数据,可能是A,B,+,-中的某一个,中间用空格分开。
A,B都只出现一次。
要求输出一个整数,表示坦克从A区到B区的最少移动步数。
如果没有方案,则输出-1
例如:
用户输入:
5
A + - + -
- + - - +
- + + + -
+ - + - +
B + - + -
则程序应该输出:
10
资源约定:
峰值内存消耗 < 512M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。
提交时,注意选择所期望的编译器类型。
#include<iostream>#include<cstring>using namespace std;char map[100][100];//地图数组int flag[100][100];//记录是否走过int next[4][2]={{0,-1},{0,1},{-1,0},{1,0}};//下一步走向int mmin=1<<30;//最小值int n;//方阵大小int check(int x, int y, int tx, int ty)//检查下一步是否符合要求{ if(tx<0||tx>=n||ty<0||ty>=n||map[x][y]==map[tx][ty]) return 0; return 1;}void dfs(int x,int y,int step)//搜索{ int tx,ty;//下一步坐标 if(map[x][y]=='B')//结束条件 { if(step<mmin)//更新最小值 { mmin=step; return; } } for(int i=0; i<4; i++) { tx=x+next[i][0]; ty=y+next[i][1]; if(check(x, y, tx, ty)&&!flag[tx][ty]) { flag[tx][ty]=1; dfs(tx,ty,step+1); flag[tx][ty]=0; } }}int main(){ int i,j; int sx,sy;//起始位置 cin>>n; getchar(); for(i=0; i<n; i++) { for(j=0; j<n; j++) { cin>>map[i][j]; } if(map[i][j]=='A')//记录起始位置 { sx=i; sy=j; } getchar(); } memset(flag,0,sizeof(flag)); dfs(sx,sy,0); if(mmin==1<<30) cout<<-1;//找不到路径 else cout<<mmin; return 0;}
输入:
5
A+-+-
-+–+
-+++-
+-+-+输出:
10
阅读全文
1 0
- DFS-地图
- BNU4071:地图填色(DFS)
- BNU4071:地图填色(DFS)
- hrbust 1614 小z的地图 dfs
- HDU1044 Collect More Jewels(BFS+DFS+地图压缩)
- hdu-2102A计划(两层地图 bfs或者dfs)
- hrbust 1614 小z的地图【四色定理+Dfs】
- CSU-1508 地图的四着色【Bfs+Dfs+思维剪枝】
- csu1508 地图的四着色(剪枝+BFS DFS)
- DFS
- DFS
- dfs
- dfs
- dfs
- dfs
- DFS
- DFS
- dfs
- 苹果的小动作:2亿美元研发无线充电及AR眼镜
- MySQL
- kotlin学习笔记(七)
- DirectSeeding路程
- java 合并两个数组 三种解法
- DFS-地图
- java异常处理
- v-for
- 关于latex的网站推荐
- AngularJS初学!!!!
- Java小结
- 【Linux虚拟机】设置vmware下的虚拟机与主机windows共享文件夹
- 浏览器后退刷新
- 生成学习算法