博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NYOJ_58最少步数(queue+BFS)
阅读量:5334 次
发布时间:2019-06-15

本文共 1450 字,大约阅读时间需要 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,1

0表示道路。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 
#include
#include
#include
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 vis[9][9], dir[4][2] = {
{1, 0}, {0, 1}, {-1, 0}, {0, -1}};struct Node{ int x, y; int num;};queue
q;int x1,x2,y1,y2;void bfs(){ while(!q.empty()) { Node temp, node; node = q.front(); q.pop(); //赋值后抛去首元素 for(int i = 0; i < 4; i++) { temp.num = node.num + 1; temp.x = node.x + dir[i][0]; temp.y = node.y + dir[i][1]; if(vis[temp.x][temp.y] || map[temp.x][temp.y] ) //推断当前节点是否被訪问过,是否有路 continue; if(temp.x == x2 && temp.y == y2) { cout<
<
>n; while(n--) { while(!q.empty()) q.pop(); memset(vis, 0, sizeof(vis)); cin>>x1>>y1>>x2>>y2; if(x1 == x2 && y1 == y2) { cout<<"0"<

转载于:https://www.cnblogs.com/liguangsunls/p/6854878.html

你可能感兴趣的文章
深度学习笔记(一)
查看>>
[moka同学笔记]使用composer 安装yii2以及遇到的问题
查看>>
为rm命令增加回收站功能
查看>>
linux网站推荐
查看>>
浏览器 连不上网(2)
查看>>
【软件工程】结对四则运算
查看>>
Windows Phone开发之路(2) 开发环境的搭建
查看>>
MySQL数据库的基础操作及理解
查看>>
ThinkPHP_5【模型获取器】
查看>>
我对程序员身体健康的一点感悟《转》
查看>>
ASP.NET线程与异步
查看>>
Arts 第十五周(6/24 ~ 6/30)
查看>>
camunda部署错误
查看>>
深入浅出React之第五章:React组件的性能优化
查看>>
RxJava2+Retrofit2优雅简洁封装
查看>>
前端排序
查看>>
POST和PUT的区别
查看>>
postman prerequest动态加密数据构造
查看>>
stm8s和stm8l低功耗对比
查看>>
7.8-1.14报告
查看>>