点击打开链接

最少步数

时间限制: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,1

0表示道路,1表示墙。

现在输入一个道路的坐标作为起点,再如输入一个道路的坐标作为终点,问最少走几步才能从起点到达终点?

(注:一步是指从一坐标点走到其上下左右相邻坐标点,如:从(3,1)到(4,1)。)

输入
第一行输入一个整数n(0<n<=100),表示有n组测试数据;
随后n行,每行有四个整数a,b,c,d(0<=a,b,c,d<=8)分别表示起点的行、列,终点的行、列。
输出
输出最少走几步。
样例输入
2
3 1  5 7
3 1  6 7
样例输出
12
11

入门的bfs,当然也可以用dfs做。

#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
struct node
{int x,y,step;
}no,ne;
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 move[4][2]={1,0,-1,0,0,1,0,-1};
int tx,ty;
int vis[9][9];
void bfs(int x,int y)
{queue<node>q;no.x=x,no.y=y;no.step=0;q.push(no);while(!q.empty()){no=q.front();q.pop();if(no.x==tx&&no.y==ty){printf("%d\n",no.step);return;}for(int i=0;i<4;i++){ne.x=no.x+move[i][0];ne.y=no.y+move[i][1];ne.step=no.step+1;if(ne.x<0||ne.x>=9||ne.y<0||ne.y>=9)continue;if(!vis[ne.x][ne.y]&&map[ne.x][ne.y]==0){vis[ne.x][ne.y]=1;q.push(ne);}}}
}
int main()
{int T;scanf("%d",&T);while(T--){int x,y;scanf("%d%d%d%d",&x,&y,&tx,&ty);memset(vis,0,sizeof(vis));bfs(x,y);}
}

南阳oj 58 bfs入门相关推荐

  1. 南阳oj a+b问题

    #include<iostream> using namespace std; int main () { int a,b; cin>>a>>b; cout< ...

  2. 【HDU 2612 Find a Way(BFS)】(兼BFS入门笔记)

    [HDU 2612 Find a Way(BFS)](兼BFS入门笔记) 原题入口: http://acm.hdu.edu.cn/showproblem.php?pid=2612 第一篇在CSDN的博 ...

  3. 东方博易OJ——1005 - 【入门】已知一个圆的半径,求解该圆的面积和周长

    大家好 今天给大家带来<东方博易OJ--1005 - [入门]已知一个圆的半径,求解该圆的面积和周长> 题目: 1005 - [入门]已知一个圆的半径,求解该圆的面积和周长 题目描述 已知 ...

  4. 东方博易OJ——1006 - 【入门】打印星号三角形

    大家好, 今天给大家带来<东方博易OJ--1006 - [入门]打印星号三角形> 题目: 1006 - [入门]打印星号三角形 题目描述 打印星号三角形. 输入 输入只有一行,包括1个整数 ...

  5. 东方博易OJ——1003 - 【入门】编程求1+3+5+...+n

    大家好, 今天给大家带来<东方博易OJ--1003 - [入门]编程求1+3+5+...+n> 题目: 1003 - [入门]编程求1+3+5+...+n 题目描述 编程求1+3+5+.. ...

  6. 南阳oj忙命逃窜,bfs

    思路:这里说的第几层实际上就是三维数组,map[x][y][z],然后可以朝六个方向移动的话,在map[1]这层可以移动上下左右,x.y变化,然后还可以从map[1][x][y]到map[2][x][ ...

  7. 南阳oj 语言入门 房间安排

    给大家推荐个靠谱的公众号程序员探索之路,大家一起加油 #include<stdio.h> #include<stdlib.h> #include<algorithm& ...

  8. 南阳oj入门题-A+B Problem

    /** A+B Problem 时间限制:3000 ms | 内存限制:65535 KB 难度:0 描述 此题为练手用题,请大家计算一下a+b的值 输入 输入两个数,a,b 输出 输出a+b的值 样例 ...

  9. 南阳oj入门题-蛇形填数

    /** 蛇形填数 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在n*n方陈里填入1,2,...,n*n,要求填成蛇形.例如n=4时方陈为: 10 11 12 1 9 16 ...

  10. 南阳oj入门题-数数

    /** 数数 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 我们平时数数都是喜欢从左向右数的,但是我们的小白同学最近听说德国人数数和我们有些不同,他们正好和我们相反,是从右 ...

最新文章

  1. 通过案例对 spark streaming 透彻理解三板斧之一: spark streaming 另类实验
  2. 375. Guess Number Higher or Lower II
  3. 金蝶K/3 同步用核算项目配置
  4. node seneca_使用Node.js和Seneca编写国际象棋微服务,第2部分
  5. Linux IPC实践(12) --System V信号量(2)
  6. 【基础】【后台】 微信小程序 - 腾讯云 - wafer2 - PHP - DEMO - 003 - 源码分析 - 02 - 路由
  7. java字符串构造函数的应用_构造函数中的参数0需要找不到类型为'java.lang.String'的bean...
  8. thoughtworks面试题分析与解答
  9. python 类属性排序_Python 使用多属性来进行排序
  10. the browsermob-proxy server process failed to start
  11. 瑞能实业IPO被终止:年营收4.47亿 曾拟募资3.76亿
  12. 打印机扫描显示计算机故障或繁忙,打印机无法扫描_如何用打印机进行扫描,如何用打印机扫描文件...
  13. lisp求面与面的差集_图形的并交差集
  14. win10双系统linux,win10系统linux双系统安装的操作方法
  15. Vmware报错“该虚拟机似乎正在使用中”获取该虚拟机所有权失败的解决
  16. 《胡雪岩全传》高阳——读后感
  17. 电脑哪个服务器可以玩无限连击,无尽之剑3手把手教你无限连击攻略
  18. ~杂记(3):los_dispatch.s和startup.s的作用分析
  19. 1969年美国(阿波罗)登月真伪
  20. studio 3T 破解方法(亲测)

热门文章

  1. MongoDB凭什么跻身数据库排行前五?
  2. ER图(实体-联系图)
  3. 如何用php 图片合成一张图片,怎么用PHP把多张图片合成一张
  4. 华人操作系统项目列表
  5. JST日本压着端子GHD系列线对板连接器PCB封装库(1.25mm间距)
  6. linux网卡驱动如何安装,linux下网卡驱动安装全过程
  7. python中函数的定义通常会从关键字_4.7. 深入 Python 函数定义
  8. VLIW的前世今生:为什么DL加速器都青睐于它
  9. mozhe靶场——网络安全——投票系统程序设计缺陷分析
  10. 从有序数组中查找数字的4种方法/二分查找/二分查找的函数递归/一一对比/一一对比的递归