深度优先搜索算法
来源:互联网 发布:excel数据导入表格 编辑:程序博客网 时间:2024/06/05 03:25
基础题:
input:
n m
下面是n行m列的矩阵,由’ . ‘和’ X ‘组成,求由(1,1)到(n,m)的最短路径
#include<iostream>using namespace std;#define M 100#define INF 10000000// 定义四个方向,来寻找最短路径int dir[4][2] = {0,1, 0,-1, 1,0, -1,0};char map[M][M];int ans,step=0,a=0;int n,m;// suppose '.'means can walk// 'X'means cannot walk// 判断x,y和map[x][y]bool judge(int x, int y){ if(x>=0 && x<n && y>=0 && y<n && map[x][y]=='.') return 1; return 0;}void dfs(int x, int y, int step) // cal the min step{ if(x==n && y==m-1) { if(step < ans) ans = step; } // 每次循环都从四个方向上来寻找最短路径 for(int i=0; i<4; i++) { int tx = x+dir[i][0]; int ty = y+dir[i][1]; if(judge(tx,ty)) { step++; map[tx][ty]='x'; dfs(tx,ty,step); step--; map[tx][ty]='.'; } }}int main(){ while(cin>>n>>m&&m&&n) { ans = INF; step = 0; a = 0; for(int i=0; i<n; i++) { getchar(); for(int j=0; j<m; j++) { scanf("%c", &map[i][j]); if(map[i][j]=='.') a++; } } dfs(0,0,0); if(ans!=INF) cout << ans << endl; else cout << "Cannot achieve" << endl; }}
0 0
- 深度优先搜索算法
- 深度优先搜索算法
- 深度优先搜索算法
- 深度优先搜索算法
- 深度优先搜索算法
- 【深度优先搜索算法】
- 深度优先搜索算法
- 深度优先搜索算法
- 深度优先搜索算法
- 算法---深度优先搜索
- 【算法】深度优先搜索
- 深度优先搜索算法
- 深度优先搜索算法
- 深度优先搜索算法
- 深度优先搜索 广度优先搜索算法
- [ 算法 ] 深度优先搜索算法!
- 深度优先搜索(DFS)算法
- 算法 DFS深度优先搜索
- 专业挂机软件AlwaysUp
- 程序员编程技术迅速提高的终极攻略
- java 内部类
- jQuery EasyUI使用教程之创建一个RSS阅读器
- 测试工作中的总结
- 深度优先搜索算法
- iOS多线程学习---控制线程通信及线程使用的总结
- 【iOS】网络操作与AFNetworking
- 黑马程序员--反射技术
- 使用KeyBoardUtil处理软键盘的弹出
- php 发送 email
- HDU 5115 Dire Wolf (区间DP)2014ICPC 北京站现场赛
- Unity的一些笔试题
- vi编辑器的使用(1)