最少步数(bfs)
最少步数
- 描述
-
这有一个迷宫,有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)分别表示起点的行、列,终点的行、列。 - 输出
- 输出最少走几步。
- 样例输入
-
2
3 1 5 7
3 1 6 7 - 样例输出
-
12
11 - 来源
- [苗栋栋]原创
- 上传者
- 苗栋栋
少考虑的情况:起点与终点是同一个点
#include<stdio.h>
#include<iostream>
#include<queue>
using namespace std;
struct Node
{
int r,c;
int ct;
}node;
int a[][]={ {,,,,,,,,},
{,,,,,,,,},
{,,,,,,,,},
{,,,,,,,,},
{,,,,,,,,},
{,,,,,,,,},
{,,,,,,,,},
{,,,,,,,,},
{,,,,,,,,} };
int vis[][];
Node f[]={ {,,},{,-,},{,,},{-,,}};
int br,bc,er,ec;
queue<Node> q;
int bfs()
{
while()
{
if(q.empty())
{
return ;
}
Node temp = q.front();
q.pop();
for(int i=;i<;i++)
{ if(vis[temp.r+f[i].r][temp.c+f[i].c]== && temp.r+f[i].r>= && temp.r+f[i].r<= &&temp.c+f[i].c>= && temp.c+f[i].c<= && a[temp.r+f[i].r][temp.c+f[i].c]==)
{
vis[temp.r+f[i].r][temp.c+f[i].c]=;
Node b;
b.r = temp.r+f[i].r;
b.c = temp.c+f[i].c;
b.ct = temp.ct+;
if(b.r == er && b.c == ec)
{
return b.ct;
}
//printf("%d %d %d %d %d\n",b.r,b.c,b.ct);
q.push(b);
} }
}
}
int main()
{
int t,i,j;
scanf("%d",&t);
while(t--)
{
for(i=;i<;i++)
for(j=;j<;j++)
vis[i][j]=;
while(!q.empty())
q.pop();
//int br,bc,er,ec;
scanf("%d %d %d %d",&br,&bc,&er,&ec);
//printf("%d %d",er,ec);
Node temp;
temp.r = br;temp.c = bc;temp.ct=;
vis[br][bc]=;
q.push(temp);
printf("%d\n",bfs());
}
return ;
}
最少步数(bfs)的更多相关文章
- POJ 3126 Prime Path【从一个素数变为另一个素数的最少步数/BFS】
Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 26475 Accepted: 14555 Descript ...
- ny 58 最少步数 (BFS)
题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=58 就是一道简单的BFS 练习练习搜索,一次AC #include <iostream& ...
- 最少步数(bfs)
最少步数 时间限制: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 ...
- 最少步数(dfs + bfs +bfs优化)
最少步数 时间限制: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 ...
- ACM 最少步数
最少步数 时间限制: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 ...
- [ACM_搜索] ZOJ 1103 || POJ 2415 Hike on a Graph (带条件移动3盘子到同一位置的最少步数 广搜)
Description "Hike on a Graph" is a game that is played on a board on which an undirected g ...
- NYOJ 58 最少步数
最少步数 时间限制: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 ...
- nyoj 1022 最少步数【优先队列+广搜】
最少步数 时间限制: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 ...
- nyist 58 最小步数 BFS
最少步数 时间限制: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 ...
随机推荐
- 6、二、App Components(应用程序组件):1、Intents and Intent Filters(意图和意图过滤器)
1.Intents and Intent Filters(意图和意图过滤器) 1.0.Intents and Intent Filters(意图和意图过滤器) An Intent is a messa ...
- css3整理--background-clip
background-clip语法: background-clip : border-box || padding-box || content-box 参数取值: border-box:此值为默认 ...
- [IOI 2000]POJ 1160 Post Office
Post Office Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22278 Accepted: 12034 Descrip ...
- [JavaScript] 配置JavaScript BUILD
<project name="eForm" default="concatenate"> <tstamp> <format pro ...
- svn st 状态详解
svn st status (stat, st): 显示工作副本中目录与文件的状态.用法: status [PATH...] 未指定参数时,只显示本地修改的条目(没有网络访问). 使用 -q 时, ...
- day_5.29 网络编程QQDemo.
2018-5-29 16:58:13 明天回学校玩几天给郭星辰过生日 实现一个QQDemo (多线程完成,因为那部分视频损坏没看) ''' from threading import Thread f ...
- asp.net C#绘制太极图
成品图: html页面: 注意设置 ContentType="Image/Jpeg" <%@ Page Language="C#" AutoEventWi ...
- [No0000B0]ReSharper操作指南1/16-入门与简介
安装指南 在安装之前,您可能需要检查系统要求. ReSharper是一个VisualStudio扩展.它支持VisualStudio2010,2012,2013,2015和2017.安装完成后,您将在 ...
- python中的os.path.dirname(__file__)的使用
在编程时,我们要获取当前文件所在的路径,以适合所有的工程,建立相对路径. python的os.path.dirname(__file__)非常好用,建议大家使用: import os FILE = o ...
- zabbix客户端自动注册
1. 概述 上一篇内容<zabbix自动发现配置>,大概内容是zabbix server去扫描一个网段,把在线的主机添加到Host列表中.我们本篇内容与上篇相反,这次是Active age ...