最少步数
来源:互联网 发布:c语言成绩系统管理制作 编辑:程序博客网 时间:2024/06/10 03:59
最少步数
http://acm.nyist.net/JudgeOnline/problem.php?pid=58
思路:广度优先搜索利用队列来实现
#include"stdio.h"#include"string.h"int c,d,rear=0,last=0;int q1[82]={0},q2[82]={0},v[9][9],dx[4]={-1,0,1,0},dy[4]={0,-1,0,1},flat[82]={0};int visit[9][9]={{1,1,1,1,1,1,1,1,1},{1,0,0,1,0,0,1,0,1},{1,0,0,1,1,0,0,0,1},{1,0,1,0,1,1,0,1,1},{1,0,0,0,0,1,0,0,1},{1,1,0,1,0,1,0,0,1},{1,1,0,1,0,1,0,0,1},{1,1,0,1,0,0,0,0,1},{1,1,1,1,1,1,1,1,1}};void bfs(int a,int b){int nx,ny,k; q1[last]=a; q2[last++]=b;//进队 while(rear<=last){ a=q1[rear]; b=q2[rear++];//出队 v[a][b]=1; if(a==c&&b==d){printf("%d\n",flat[rear-1]);return ;} for(k=0;k<4;k++) {nx=a+dx[k];ny=b+dy[k];if(nx>=0&&nx<9&&ny>=0&&ny<9&&!v[nx][ny]&&!visit[nx][ny]){ flat[last]=flat[rear-1]+1;q1[last]=nx; q2[last++]=ny; //进队} } } }int main(){ int a,b,n; scanf("%d",&n); while(n--) { scanf("%d%d%d%d",&a,&b,&c,&d); memset(v,0,sizeof(v)); memset(flat,0,sizeof(flat)); rear=0;last=0; bfs(a,b); }return 0;}
- 最少步数
- 最少步数
- NYOJ 最少步数
- nyoj58 最少步数
- NYOJ58-最少步数
- 最少步数
- 最少步数
- 58 最少步数
- nyoj58最少步数
- NYOJ_58 最少步数
- nyoj58最少步数
- nyoj58最少步数
- nyoj 最少步数
- 最少步数BFS
- ACM58最少步数
- NYOJ【最少步数】
- 最少步数
- nyoj58 最少步数
- simpleDB paging
- live555直播
- EcShop的目录文件结构
- linux下串口gprs模块编程
- java日期格式化、解析
- 最少步数
- c# 如何应对鼠标离开,自动执行查询事件,并显示在指定地方
- QString ->char
- Android目录结构(详解)<摘录>
- Jquery操作表单Select元素的用法
- iOS开发12:UIPickerView控件(2)
- Eclipse里项目名有红叉,但是底下的每一个文件都没有红叉
- vi使用的基本技巧
- 【Java-Android开发系列】Android SDK的安装配置