【真题解析】题目 3151: 蓝桥杯2023年第十四届省赛真题-飞机降落【C++ DFS 超详解注释版本】

news2024/11/19 5:29:49

爆搜冥想

  • 暴力枚举每一辆飞机
  • 对于每一个飞机都只存在两种情况,可以降落和不可以降落
  • 如果可以降落,计算降落后最早可以降落的时间pre,作为下一次递归的传参
  • 如果不可以降落,枚举下一辆飞机

注意这辆的降落有盘旋这种量子叠加态!
说人话就是:

  • 降落时有两种情况,一种是开始降落时间比pre后,那么从这个降落时间开始往后计算进行下一次递归即可。
  • 还有一种就是,在盘旋的状态中可以降落,那么就直接用pre计算下一次最早降落的时间,也就是结束盘旋状态立即降落。

核心出装

//plane.st:最早开始时间	plane.con:可持续时间 plane.netm:落地需要的时间 
bool dfs(vector<plane> &v,vector<bool> &bl,int pre,int count){			//pre和count默认是为0的 
    if(count==v.size()) return true;									//如果搜索了全部的飞机,函数返回true             
    for(int i=0;i<v.size();i++){										//遍历数组中所有飞机                
        if(bl[i] == false){												//如果找到一架飞机没有降落就使它降落 
            bl[i] = true;												//将该飞机的状态设置为已经降落 
            if(pre < v[i].st){											//如果这辆斐济满足降落条件 
                if(dfs(v, bl, v[i].st+v[i].netm, count+1)) return true;	//继续搜索这辆飞机降落后的时间,如果满足返回true 
            }else if(pre <= v[i].st+v[i].con){							//如果这辆飞机盘旋后可以满足降落条件 
                if(dfs(v, bl, pre+v[i].netm, count+1)) return true;		//让这一架飞机立即降落,搜索它降落后的情况,满足返回true 
            }
            bl[i] = false;												//如果不满足降落条件,将这辆飞机的状态恢复成false 
        }
    }
    return false;														//搜索结束找不到返回false 
}

返回泉水

// 蓝桥真题-飞机降落 
#include<bits/stdc++.h>
using namespace std;
class plane{
public:
    int st;//最早开始时间 
    int con;//可持续费的时间 
    int netm;//落地需要的时间  
    plane(int s,int c,int ne){
        st=s;
        con=c;
        netm=ne;
    } 
};
//plane.st:最早开始时间	plane.con:可持续时间 plane.netm:落地需要的时间 
bool dfs(vector<plane> &v,vector<bool> &bl,int pre,int count){			//pre和count默认是为0的 
    if(count==v.size()) return true;									//如果搜索了全部的飞机,函数返回true             
    for(int i=0;i<v.size();i++){										//遍历数组中所有飞机                
        if(bl[i] == false){												//如果找到一架飞机没有降落就使它降落 
            bl[i] = true;												//将该飞机的状态设置为已经降落 
            if(pre < v[i].st){											//如果这辆斐济满足降落条件 
                if(dfs(v, bl, v[i].st+v[i].netm, count+1)) return true;	//继续搜索这辆飞机降落后的时间,如果满足返回true 
            }else if(pre <= v[i].st+v[i].con){							//如果这辆飞机盘旋后可以满足降落条件 
                if(dfs(v, bl, pre+v[i].netm, count+1)) return true;		//让这一架飞机立即降落,搜索它降落后的情况,满足返回true 
            }
            bl[i] = false;												//如果不满足降落条件,将这辆飞机的状态恢复成false 
        }
    }
    return false;														//搜索结束找不到返回false 
}
int main(){
    int t;
    cin>>t;						//输入测试数据总数 
    while(t--){					//执行对应次数 
        int n;					//输入飞机数量 
        cin>>n;
        vector<plane> v;		//初始化动态数组存放飞机 
        vector<bool> bl(n,false);	//每一辆飞机的状态初始化为false 
        while(n--){				//输入每一架飞机的信息 
            int t,d,l;			 
            cin>>t>>d>>l;
            v.push_back(plane(t,d,l));		//将该飞机推入动态数组 
        }
        if(dfs(v,bl,0,0)) cout<<"YES"<<endl;	//如果搜索到一种情况能使得飞机们降落返回true 
        else cout<<"NO"<<endl;					//否则返回false 
    }
    return 0;
}

结语🤣

这一次blog尝试了比较抽象的标题,这里进行解读:

  • 爆搜冥想:即核心思想,思路过程。
  • 核心出装:即完成功能的主要实现函数,dfs函数。
  • 返回泉水:即所有代码的一览。

编译环境

C++ 11 && DevC++
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1547859.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql刨根问底

索引&#xff1a;排好序的数据结构 二叉树&#xff1a; 红黑树 hash表&#xff1a; b-tree&#xff1a; 叶子相同深度&#xff0c;叶节点指针空&#xff0c;索引元素不重复&#xff0c;从左到右递增排序 节点带data btree&#xff1a; 非叶子节点只存储索引&#xff0c;可…

HTTPS 从懵懵懂懂到认知清晰、从深度理解到落地实操

Https 在现代互联网应用中&#xff0c;网上诈骗、垃圾邮件、数据泄露的现象时有发生。为了数据安全&#xff0c;我们都会选择采用https技术。甚至iOS开发调用接口的时候&#xff0c;必须是https接口&#xff0c;才能调用。现在有部分浏览器也开始强制要求网站必须使用https&am…

Python(Socket) +Unreal(HTTP)

Python&#xff08;Socket&#xff09; Unreal&#xff08;HTTP&#xff09; python&#xff08;Socket&#xff09;:UE&#xff1a;Post请求并发送本机IP 上班咯&#xff0c;好久没记笔记了。。。 局域网 UE的apk&#xff0c;请求Python的Socket 跑起Socket &#xff0c;UE发 …

长安链共识算法切换:动态调整,灵活可变

#功能发布 长安链3.0正式版发布了多个重点功能&#xff0c;包括共识算法切换、支持java智能合约引擎、支持后量子密码、web3生态兼容等。我们接下来为大家详细介绍新功能的设计、应用与规划。 随着长安链应用愈加成熟与广泛&#xff0c;一些在生产中很实用的需求浮出水面。长安…

RabbitMQ 《简单消息》

package com.xzp.rabbitmq.simple; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.xzp.rabbitmq.util.ConnectionUtil; /** * "Hello World!" * 简单消息 * 消息发送者 - R - 发送消息&#xff08;生产者&#xff09; …

nandgame中的汇编语言(Assembler Language)

配置一个汇编器&#xff0c;将符号指令转换为二进制机器码。汇编器指令有三个部分&#xff1a;目标、计算和&#xff08;可选的&#xff09;跳转条件。目标是操作的输出写入的寄存器。计算是ALU操作。请参阅ALU级别的位模式。跳转条件是将触发跳转的条件。请参阅条件级别以获取…

初识云原生、虚拟化、DevOps

文章目录 K8S虚拟化DevOpsdevops平台搭建工具大数据架构 K8S master 主节点&#xff0c;控制平台&#xff0c;Master节点负责核心的调度、管理和运维&#xff0c;不需要很高性能&#xff0c;不跑任务&#xff0c;通常一个就行了&#xff0c;也可以开多个主节点来提高集群可用度…

AIGC工具系列之——基于OpenAI的GPT大模型搭建自己的AIGC工具

今天我们来讲讲目前非常火的人工智能话题“AIGC”&#xff0c;以及怎么使用目前的AI技术来开发&#xff0c;构建自己的AIGC工具 什么是AIGC&#xff1f; AIGC它的英文全称为(Artificial Intelligence Generated Content)&#xff0c;中文翻译过来就是“人工智能生成内容”&…

v4l2采集视频

Video4Linux2&#xff08;v4l2&#xff09;是用于Linux系统的视频设备驱动框架&#xff0c;它允许用户空间应用程序直接与视频设备&#xff08;如摄像头、视频采集卡等&#xff09;进行交互。 linux系统下一切皆文件&#xff0c;对视频设备的操作就像对文件的操作一样&#xff…

C语言------指针(2)

前面已经向大家介绍了指针的一些基本内容&#xff0c;接下来&#xff0c;就在再我来先大家讲解一下指针的其他内容。 1. 数组名的理解 int arr[10] { 1,2,3,4,5,6,7,8,9,10 }; 在学习数组的过程中&#xff0c;我们肯定会写过以上代码&#xff0c;我们知道 int 是该数组的数…

[BT]BUUCTF刷题第8天(3.26)

第8天 Web [CISCN2019 华北赛区 Day2 Web1]Hack World 题目明确提示flag在flag表里的flag列&#xff0c;这里先尝试1 返回&#xff1a;你好&#xff0c;glzjin想要一个女朋友。 再尝试1&#xff0c;返回bool(false) 到这里就感觉是布尔盲注的题目类型了&#xff08;虽然我没…

GPT提示词分享 —— 代码释义者

提示词&#x1f447; 我希望你能充当代码解释者&#xff0c;阐明代码的语法和语义。 3.5版本&#x1f447; free2gpt 4.0版本&#x1f447; gpt4

深入解析快速排序算法

深入解析快速排序算法 一、快速排序算法简介二、快速排序算法过程三、快速排序算法示例四、快速排序算法分析1. 时间复杂度&#xff1a;2. 空间复杂度&#xff1a;3. 稳定性&#xff1a; 五、快速排序算法优化1. 优化基准元素的选择&#xff1a;2. 优化小数组的排序&#xff1a…

[HackMyVM]靶场Crossbow

kali:192.168.56.104 靶机:192.168.56.136 端口扫描 # nmap 192.168.56.136 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-26 22:17 CST Nmap scan report for crossbow.hmv (192.168.56.136) Host is up (0.0057s latency). Not shown: 997 closed tcp…

Spring IOC 容器循环依赖解决(三级缓存)

对于循环依赖的解决&#xff0c;首先得了解Spring IOC 容器的创建过程&#xff0c;在加载过程中&#xff0c;Bean 的实例化和初始化是分开的&#xff0c;所以在解决循环依赖的问题时&#xff0c;也是基于Bean 的实例化和初始化分开执行这一特点。 我们将实例化后的Bean 叫 半成…

2024中国闪存市场观察:AI助推闪存全面起势?

过去两年&#xff0c;闪存市场一直处于低迷状态&#xff0c;但去年第四季度闪存颗粒资源的上涨&#xff0c;导致闪存产品价格一路上扬&#xff0c;市场遂发生反转。 2024年&#xff0c;中国闪存市场会彻底走向复苏&#xff0c;还是急转直下&#xff1f;中国AI热潮&#xff0c;…

JavaScript原型、原型对象、原型链系列详解(五)

(五)、JavaScript原型设计模式 什么是JavaScript原型设计模式&#xff1f; 为什么要使用JavaScript原型设计模式&#xff1f; JavaScript原型设计模式的实现方法有哪些&#xff1f; JavaScript原型设计模式的应用场景是什么&#xff1f; 什么是JavaScript原型设计模式&#xff…

Raft 共识算法

什么是木筏&#xff1f; Raft 是一种共识算法&#xff0c;旨在易于理解。它 在容错和性能方面与Paxos相当。不同之处在于 它被分解成相对独立的子问题&#xff0c;而且它干净利落 解决了实际系统所需的所有主要部分。我们希望 Raft 能使 更广泛的受众可以达成共识&#xff0c;并…

【网站项目】303老年人的景区订票系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

主流公链 - Cosmos

探索Cosmos区块链&#xff1a;构建互联的区块链网络 1. Cosmos简介 Cosmos是一个开放的区块链互联协议&#xff0c;旨在解决区块链之间的孤立性问题。它的愿景是构建一个可以互相通信和互操作的区块链网络&#xff0c;实现资产和数据的流动性。在Cosmos中&#xff0c;不同的区…