当前位置: 首页 > news >正文

每日OJ_牛客_过桥_贪心+BFS_C++_Java

目录

牛客_过桥_贪心+BFS

题目解析

C++代码

Java代码


牛客_过桥_贪心+BFS

过桥

描述:
        dd被困在了一个迷幻森林,现在她面前有一条凶险的大河,河中央有n个神奇的浮块,浮块按1∼n1顺序标号,但两两并不相接,第i个浮块上有一个数字a[i],可能是正数,也可能是负数,每块浮块都附带一个魔法结界用于传送,当a[i]a[i]a[i]为正数时,dd可以选择传送到第i+k(1≤k≤a[i])个浮块上,当dd抵达n号浮块时才可以顺利脱身,显然不管a[n]是多少,都没有任何意义,当a[i]为负时,dd只能选择标号小于等于i+a[i]的任意一块浮块进行传送,当i+a[i]<1时,默认只能传送到1的位置,每次传送都会花费1s的时间,随着时间的流逝,迷雾森林的空气会被逐渐榨干,她现在在1号浮块,她想知道,她最快多久能顺利脱身,如果始终无法逃脱,请输出−1

输入描述:

第一行一个数n(2≤n≤2000)

接下来一行n个数a[i](1≤|a[i]|≤2000)表示浮块上的数字

输出描述:

输出一行,表示对应的答案


题目解析

类似层序遍历的思想:


C++代码

#include <iostream>
using namespace std;
const int N = 2010;
int n;
int arr[N];

int bfs()
{
    int left = 1, right = 1;
    int ret = 0;
    while(left <= right)
    {
        ++ret;
        int r = right;
        for(int i = left; i <= right; ++i)
        {
            r = max(r, arr[i] + i);
            if(r >= n)
                return ret;
        }
        left = right + 1;
        right = r;
    }
    return -1;
}

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

Java代码

import java.util.*;
public class Main
{
    public static int n;
    public static int[] arr = new int[2010];

    public static int bfs()
    {
        int left = 1, right = 1;
        int ret = 0;
        while(left <= right)
        {
            ret++;
            int r = right;
            for(int i = left; i <= right; i++)
            {
                r = Math.max(r, arr[i] + i);
                if(r >= n)
                {
                    return ret;
                }
            }
            left = right + 1;
            right = r;
        }
        return -1;
    }

    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        for(int i = 1; i <= n; i++)
        {
            arr[i] = in.nextInt();
        }

        System.out.println(bfs());
    }
}

相关文章:

  • 51单片机汇编工程建立、仿真、调试全过程
  • 江科大51单片机笔记【15】直流电机驱动(PWM)
  • 图解AUTOSAR_CP_TcpIp
  • BFS比DFS更好理解「翻转二叉树」
  • 元宇宙与数字孪生
  • 基于Python懂车帝汽车数据分析平台(源码+lw+部署文档+讲解),源码可白嫖!
  • 《HTML + CSS + JS 打造炫酷轮播图详解》
  • 01 | Go 项目开发极速入门课介绍
  • C语言实现冒泡排序,超详解
  • 贝叶斯分层回归(Bayesian Hierarchical Regression)是一种基于贝叶斯统计理论的数据分析方法
  • TDengine SQL 函数
  • 《基于机器学习的DDoS攻击检测与防御系统设计与实现》开题报告
  • postgresql源码安装
  • Jetpack Paging 终极封装:简洁、通用、高性能的分页加载方案
  • 完整项目案例:基于Django的毕业设计选题管理系统(包含源码结构、核心代码及设计文档框架)
  • spring boot 发送邮件验证码
  • VSTO(C#)Excel开发4:打印设置
  • 【C/C++】相交链表(leetcode T160)
  • C语言学习笔记-进阶(13)动态内存管理2
  • 欢乐力扣:有效的括号
  • 这座古村,藏着多少赣韵风华
  • 中国象棋协会坚决支持司法机关依法打击涉象棋行业的违法行为
  • 保证断电、碰撞等事故中车门系统能够开启!汽车车门把手将迎来强制性国家标准
  • 现场丨“影像上海”启幕:串联摄影、电影与当代艺术
  • 上海将发布新一版不予行政处罚清单、首份减轻行政处罚清单
  • 印巴冲突升级,巴防长称已击落5架印度战机