深搜求迷宫最短路径
2015-08-06 21:21
183 查看
#include<stdio.h> //0表示可以走 1表示墙
int vis[6][6]={0};
int a[6][6];
int num=10000000;
int min(int x,int y)
{
if(x<y) return x;
return y;
}
void dfs(int x,int y,int step)
{
if(x==4 && y==4)
{
num=min(num,step);
return ;
}
if(a[x][y+1]!=1 && y+1<5 && vis[x][y+1]!=1)
{
vis[x][y]=1;
dfs(x,y+1,step+1);
//vis[x][y]=0;
}
if(a[x+1][y]!=1 && x+1<5 && vis[x+1][y]!=1)
{
vis[x][y]=1;
dfs(x+1,y,step+1);
//vis[x][y]=0;
}
if(a[x][y-1]!=1 && y-1>=0 && vis[x][y-1]!=1)
{
vis[x][y]=1;
dfs(x,y-1,step+1);
//vis[x][y]=0;
}
if(a[x-1][y]!=1 && x-1>=0 && vis[x-1][y]!=1)
{
vis[x][y]=1;
dfs(x-1,y,step+1);
//vis[x][y]=0;
}
return ;
}
int main()
{
for(int i=0;i<5;++i)
for(int j=0;j<5;++j)
scanf("%d",&a[i][j]);
dfs(0,0,0);
printf("%d",num);
return 0;
}
int vis[6][6]={0};
int a[6][6];
int num=10000000;
int min(int x,int y)
{
if(x<y) return x;
return y;
}
void dfs(int x,int y,int step)
{
if(x==4 && y==4)
{
num=min(num,step);
return ;
}
if(a[x][y+1]!=1 && y+1<5 && vis[x][y+1]!=1)
{
vis[x][y]=1;
dfs(x,y+1,step+1);
//vis[x][y]=0;
}
if(a[x+1][y]!=1 && x+1<5 && vis[x+1][y]!=1)
{
vis[x][y]=1;
dfs(x+1,y,step+1);
//vis[x][y]=0;
}
if(a[x][y-1]!=1 && y-1>=0 && vis[x][y-1]!=1)
{
vis[x][y]=1;
dfs(x,y-1,step+1);
//vis[x][y]=0;
}
if(a[x-1][y]!=1 && x-1>=0 && vis[x-1][y]!=1)
{
vis[x][y]=1;
dfs(x-1,y,step+1);
//vis[x][y]=0;
}
return ;
}
int main()
{
for(int i=0;i<5;++i)
for(int j=0;j<5;++j)
scanf("%d",&a[i][j]);
dfs(0,0,0);
printf("%d",num);
return 0;
}
相关文章推荐
- Container With Most Water
- 花生壳如何搭载邮件服务器
- 160元/㎡,天猫“擦边球营销”玩儿的是哪一出?
- Log4J学习【二十三】常用的Appender之SocketAppender
- Blackjack 项目 in python
- autocomplete 参数说明
- 深搜迷宫
- 数字海洋
- Codeforces Round #Pi (Div. 2)——map——Geometric Progression
- 【MySQL】MySQL中针对大数据量常用技术_创建索引+缓存配置+分库分表+子查询优化(转载)
- 使用nginx生成缩略图
- 通过DexClassLoader动态加载代码
- 合唱队
- CentOS7.1 安装NVIDIA显卡驱动(双显卡:集显和独显)
- 深搜从n个数中找和为k的数
- SELinux深入理解
- poj 3320 尺取法
- HDOJ-1016-Prime Ring Problem(素数环)【DFS】
- 重温《C++ Primer》笔记十 当数组作为函数参数时
- Appium 服务关键字