第16周 啊哈算法 深度优化搜索应用(最短路径算法)
2016-07-12 09:27
543 查看
问题及代码:
/*求最短路径算法
用途:可用于交通系统、营救最优路径
*/
#include<stdio.h>
int n,m,p,q,min=999999;
int a[50][51],book[50][51];
void dsf(int x,int y,int step)
{
//下一步四个方向的数组
int next[4][2]={(0,1),
(1,0),
(0,-1),
(-1,0)};
if(x==p && y==q)
{
if(step<min)
{
min=step;
return;
}
}
int k;
for(k=1;k<=4;k++)
{
x=x+next[k][0];//x一直在第一位,即0
y=y+next[k][1]; //y一直在第二位,即1
if(a[x][y]==0 && book[x][y]==0)//判断坐标是否为障碍物和标记
{
book[x][y]=1;
dsf(x,y,step+1);
book[x][y]=0;
}
return;
}
}
int main()
{
int i,j,startx,starty;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d %d",&n,&m);
scanf("%d %d %d %d",&startx,&starty,&p,&q);
dsf(startx,starty,0);
getchar();getchar();
return 0;
}
/*求最短路径算法
用途:可用于交通系统、营救最优路径
*/
#include<stdio.h>
int n,m,p,q,min=999999;
int a[50][51],book[50][51];
void dsf(int x,int y,int step)
{
//下一步四个方向的数组
int next[4][2]={(0,1),
(1,0),
(0,-1),
(-1,0)};
if(x==p && y==q)
{
if(step<min)
{
min=step;
return;
}
}
int k;
for(k=1;k<=4;k++)
{
x=x+next[k][0];//x一直在第一位,即0
y=y+next[k][1]; //y一直在第二位,即1
if(a[x][y]==0 && book[x][y]==0)//判断坐标是否为障碍物和标记
{
book[x][y]=1;
dsf(x,y,step+1);
book[x][y]=0;
}
return;
}
}
int main()
{
int i,j,startx,starty;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d %d",&n,&m);
scanf("%d %d %d %d",&startx,&starty,&p,&q);
dsf(startx,starty,0);
getchar();getchar();
return 0;
}
相关文章推荐
- html页面input只许输入数字
- 嵌入式学习-uboot-lesson14-LCD相关
- 新手上路 腾云驾雾
- PHP 判断数组是否为空的几种方法
- Python如何调用新浪api接口的问题
- uiUIlabel 自适应宽度和高度
- 链表排序
- Active Shape Models with Stasm 接口使用
- 不要在功能上竞争
- 状态码
- ratingbar设置不可调节星星数量
- 从0开始学习ssh之日志工具与配置log4j
- mysql 主主复制(双主复制)报错Last_SQL_Errno: 1146
- require.js配合插件text.js实现最简单的单页应用程序
- Java Web开发问题
- 事务中的锁,行锁与表锁
- 前端入门
- SAP复制会计年度
- Mybatis分页
- IDEA 滚动条跳动问题