最少步数
来源:互联网 发布:搜狗微信 php 爬虫 编辑:程序博客网 时间:2024/05/28 22:12
最少步数
时间限制:3000 ms | 内存限制:65535 KB
难度:4
- 描述
这有一个迷宫,有0~8行和0~8列:
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,10表示道路,1表示墙。
现在输入一个道路的坐标作为起点,再如输入一个道路的坐标作为终点,问最少走几步才能从起点到达终点?
(注:一步是指从一坐标点走到其上下左右相邻坐标点,如:从(3,1)到(4,1)。)
- 输入
- 第一行输入一个整数n(0<n<=100),表示有n组测试数据;
随后n行,每行有四个整数a,b,c,d(0<=a,b,c,d<=8)分别表示起点的行、列,终点的行、列。 - 输出
- 输出最少走几步。
- 样例输入
23 1 5 73 1 6 7
- 样例输出
1211
简单搜索
#include<iostream>#include<cstring>const int INF=100000;using namespace std;int map[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 };int next[4][2]={{1,0},{-1,0},{0,1},{0,-1}};int a,b,c,d,res;bool vis[10][10];void dfs(int x,int y,int step){if(x==c&&y==d){if(res>step)res=step;return;}for(int k=0;k<4;k++){int nx=x+next[k][0];int ny=y+next[k][1];if(nx<0||nx>=9||ny<0||ny>=9)continue;if(!vis[nx][ny]&&!map[nx][ny]){vis[nx][ny]=true;dfs(nx,ny,step+1);vis[nx][ny]=false;}}}int main(){int n;cin>>n;while(n--){res=INF;memset(vis,false,sizeof(vis));cin>>a>>b>>c>>d;vis[a][b]=true;dfs(a,b,0);cout<<res<<endl;}return 0;}
阅读全文
0 0
- 最少步数
- 最少步数
- NYOJ 最少步数
- nyoj58 最少步数
- NYOJ58-最少步数
- 最少步数
- 最少步数
- 58 最少步数
- nyoj58最少步数
- NYOJ_58 最少步数
- nyoj58最少步数
- nyoj58最少步数
- nyoj 最少步数
- 最少步数BFS
- ACM58最少步数
- NYOJ【最少步数】
- 最少步数
- nyoj58 最少步数
- android 应用系统签名实现流程
- Gson在java对象和json字符串之间转换
- Android使用网络技术实现新闻客户端实验
- vue.js的基础学习
- Java IO学习笔记四
- 最少步数
- vim使用点滴记录
- java微信开发之微信支付
- Postgers
- linux平台查看CPU、内存消耗降序的进程列表
- mysql 索引与联合索引详解
- 判断一棵二叉树是否为另一棵二叉树的子树,Python实现
- 希尔排序(Java实现)
- PostgreSQL 连接问题 FATAL: no pg_hba.conf entry for host