首页 > 其他分享 >回家的路(BFS)

回家的路(BFS)

时间:2024-04-01 12:58:53浏览次数:17  
标签:int 位置 青蛙 回家 BFS vis include 105

 题目描述

直线上依次有 1~n 号位置,相邻位置距离为 1,部分位置上有百合花,只有这些位置青蛙可以站上去。一只青蛙在 1 号位置,而它的家在 n 号位置,他每次可以跳两步或者三步。你要计算青蛙至少跳几次可以到家。

【输入格式】

输入共 2 行:
第 1 行,一个整数 n,意义如题目描述;
第 2 行,n 长度的由 0,1 组成的字符串,依次表示 1~n 号位置是否有百合花,1表示有,0表示无。

【输出格式】

输出共 1 行:
第 1 行,1 个整数,为青蛙到家至少需要跳的次数,如果它不可能回家则输出 -1。

#include <iostream>
#include <queue>
using namespace std;

bool vis[105], a[105];
int n, dis[105];

int bfs()
{
	queue<int> q;
	q.push(1);
	vis[1] = true;
	while (!q.empty())
	{
		int x = q.front();
		if (x == n)
		{
			return dis[x];
		}
		q.pop();
		int y = x + 3;
		if (y <= n && !vis[y] && a[y])
		{
			q.push(y);
			vis[y] = 1;
			dis[y] = dis[x] + 1;
		}
		y = x + 2;
		if (y <= n && !vis[y] && a[y])
		{
			q.push(y);
			vis[y] = 1;
			dis[y] = dis[x] + 1;
		}
	}
	return -1;
}

int main()
{
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
	}
	cout << bfs() << endl;
	return 0;
}

标签:int,位置,青蛙,回家,BFS,vis,include,105
From: https://blog.csdn.net/2301_76841790/article/details/137201973

相关文章

  • 图的广度优先遍历BFS得到各节点的度
    难题初始化,在下面的代码中,我们创建了一个具有十个结点的图结构,并且通过rand函数来给各结点之间的路径赋值。typedefstructGraph{//创建图结构 intvalues[10][10];//图结构的邻接矩阵,权值为0意味两结点无路径}Graph;voidFillGraph(Graph&g)......
  • Acwing 5475. 聚会 ( BFS )
    https://www.acwing.com/problem/content/5478/输入样例1:5543124321223344145输出样例1:22223输入样例2:76321233221122334255667输出样例2:1112211#pragmaGCCdiagnosticerror"-std=c++11"#pragmaGCCtarget(......
  • 搜索与图论(二)bfs---以题为例
    给定一个 n×m的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0 表示可以走的路,1 表示不可通过的墙壁。最初,有一个人位于左上角 (1,1)处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角 (n,m)处,至少需要移动多......
  • P1135 奇怪的电梯 (双向bfs)
    输入输出样例输入 51533125输出3说明/提示对于 100%100% 的数据,1≤N≤200,1≤A,B≤N,0≤Ki​≤N。本题共 1616 个测试点,前 1515 个每个测试点 66 分,最后一个测试点 10 分。1.重写AC代码:将步数记录在结构体中#include<algorithm>#include<iostream......
  • 洛谷P1443 马的遍历(bfs模版题)
    洛谷P1443马的遍历https://www.luogu.com.cn/problem/P1443一道经典的bfs入门题这里贴上代码//#defineLOCAL1#define_CRT_SECURE_NO_WARNINGS1#include<bits/stdc++.h>//#defineintlonglong#defineendl"\n";usingnamespacestd;constintmaxn=500;intG......
  • 十三 1355. 母亲的牛奶 (BFS)
    1355.母亲的牛奶(BFS)思路:使用BFS搜索所有可能出现的情况,同时保存到used数组,防止重复搜索,最后遍历used数组,因为只求C桶中牛奶,所有先遍历C桶,出现A桶为空立即打印结果并break。importjava.util.*;publicclassMain{privatestaticintA,B,C;privatestatic......
  • 蓝桥杯算法集训 - Week 4:BFS、并查集、Flood Fill、哈希、单调栈/队列
    蓝桥杯算法集训-Week4本系列随笔用于整理AcWing题单——《蓝桥杯集训·每日一题2024》的系列题型及其对应的算法模板。一、BFSBFS算法复习参考:BFS(Java)广度优先搜索简单介绍、模板、案例(一)Ⅰ、代码模板staticvoidbfs(Troot){//双端队列,用来存储元素D......
  • 浅析BFS
    广度优先搜索(BFS)广度优先算法(BFS)又称宽度优先搜索,是指依次将与根节点路径长度(默认每条边长度相同)相同的点遍历,再遍历路径长度加一的点,直到遍历完整个图结束。BFS在树中的应用作用:BFS用于在树中搜索某个特定的数据。方法:从根节点开始搜索,按层遍历整个树。一般使用队......
  • 【BFS】(代码详解)
    全面学习BFS的可以参照以下路径,本文章只附上部分代码的解释作为学习记录共勉(星星眼)原文链接:https://blog.csdn.net/m0_62881629/article/details/125072287给定一个n×mn×m的二维整数数组,用来表示一个迷宫,数组中只包含00或11,其中00表示可以走的路,11表示不可通过......
  • 1.基于搜索的路径规划:BFS、DFS、Dijkstra、A*、JPS
    1.概览可以对比不同算法的小动画 PathFinding.js(qiao.github.io)工作空间规划机器人有不同的形状和大小碰撞检测需要了解机器人的几何形状,耗时且难度大 我们希望将机器人表示为点,只需要把工作空间转换为配置空间C-obstacle,将原始的空间膨胀,这是一次性的C-space......