啊哈算法DFS应用之解救小哈
2016-10-03 16:58
169 查看
#include <stdio.h> #include <stdlib.h> int book[51][51];//标记走过的点 int map[51][51];//存图 int next[4][2]={{-1,0},{1,0},{0,-1},{0,1}};//存当前坐标要走的上下左右四个方向 int n;//图的规模 int locx,locy;//小哈位置 //假设小哼在(1,1)点 int min=100000;//最短路径 void dfs(int step,int x,int y) { if(x==locx&&y==locy){//到达小哈位置 if(step<min)//判断是否可以更新最短距离 min=step; return; } //遍历四个方向 int xnext; int ynext; for(int i=0;i<4;i++){ xnext=x+next[i][0]; ynext=y+next[i][1]; if(xnext>=1&&xnext<=n&&ynext>=1&&ynext<=n&&map[xnext][ynext]==1&&book[xnext][ynext]==0){ book[xnext][ynext]=1; dfs(step+1,xnext,ynext); book[xnext][ynext]=0; } } return; } int main() { for(int i=0;i<=50;i++)//初始化book数组 memset(book[i],0,sizeof(book[i])); scanf("%d",&n); scanf("%d%d",&locx,&locy); //读入map,非障碍物标1 for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&map[i][j]); book[1][1]=1; dfs(0,1,1); printf("%d\n",min); return 0; }
相关文章推荐
- 啊哈算法BFS应用之解救小哈
- 图的点着色、区间着色问题及其应用(基于贪心思想的DFS回溯法求点着色问题和区间着色算法求解任务调度问题)
- 啊哈算法DFS应用之全排列
- 图算法(一)——基本图算法(BFS,DFS及其应用)(1)
- 啊哈!算法—深度优先搜索DFS—解救小哈
- 基础算法之DFS应用
- 啊哈算法搜索应用之宝岛探险(BFS和DFS)
- 图算法(一)——基本图算法(BFS,DFS及其应用)(2)
- 啊哈算法搜索应用之再解炸弹人(DFS与BFS)
- 种子填充算法在验证码识别中的的应用
- 数据挖掘技术的算法与应用读书报告
- 一个应用单链表基本算法的程序
- 算法设计应用实例
- 网页模糊归类算法的应用与实现(转载)
- IDEA算法及应用(java)
- 应用系统权限表示的算法技巧
- 一个应用二叉树基本算法的程序
- Web结构挖掘算法概述及应用
- 最短路径算法及应用
- 贪心算法在背包中的应用(转)