3.14练习

news/2025/3/14 16:20:52/文章来源:https://www.cnblogs.com/zwn1ow/p/18772278

题目链接点这里

题意是你有 n 个盒子,每个盒子有一个状态 status[i],表示盒子是否打开。每个盒子里面有一些糖果 candies[i],以及一些钥匙 keys[i] 和一些其他盒子 containedBoxes[i]。你最初拥有一些盒子 initialBoxes,你可以通过打开这些盒子来获得里面的糖果和钥匙。钥匙可以用来打开其他盒子,而其他盒子里面可能也有糖果和钥匙。你需要计算你最多能获得多少糖果。

解题思路
这道题目可以使用BFS来解决。首先建立以下数组:
have[i]:表示我们是否拥有第 i 个盒子。
open[i]:表示第 i 个盒子是否已经被打开。
visited[i]:表示第 i 个盒子是否已经被访问过。

我们首先遍历 initialBoxes,将我们拥有的盒子标记为 have[i] = true,并且如果盒子是打开的 status[i] == 1,我们就将其加入队列 q 中,并标记为已访问。
然后我们开始BFS。遍历队列中的盒子,对于每个盒子,我们首先将其中的钥匙对应的盒子标记为打开状态 open[keys[a][i]] = true。如果这个盒子我们之前已经拥有 have[keys[a][i]] == true,并且还没有被访问过,我们就将其加入队列中。
接着,我们遍历当前盒子中包含的其他盒子,将其标记为拥有 have[containedBoxes[a][i]] = true。如果这些盒子已经被打开并且还没有被访问过,我们也将其加入队列中。
最后,我们将当前盒子中的糖果数加到 maxx 中,表示我们获得了这些糖果(我们能获得的最大糖果数就是我们能打开的所有箱子里的糖果数之和)。

ac代码如下:
class Solution {
public:int maxCandies(vector<int>& status, vector<int>& candies, vector<vector<int>>& keys, vector<vector<int>>& containedBoxes, vector<int>& initialBoxes) {int n = status.size();vector <bool> have(n, false), open(n, false), visited(n, false);  // 初始化状态数组,have表示拥有这个箱子,open代表有这个箱子的钥匙/箱子是打开的,visited表示被访问过for(int i = 0; i < n; i++){if(status[i] == 1) open[i] = true;}queue <int> q;for(auto& i : initialBoxes){have[i] = true;if(open[i] == true){q.push(i);visited[i] = true;  // 如果盒子的初始状态是打开的,则标记为访问过}}int maxx = 0; // 初始化能得到的最大糖果数while(!q.empty()){  // 进行bfsint a = q.front();q.pop();for(int i = 0; i < keys[a].size(); i++){  // 判断得到哪些盒子的钥匙open[keys[a][i]] = true;if(have[keys[a][i]] == true && !visited[keys[a][i]]){q.push(keys[a][i]);visited[keys[a][i]] = true;}}for(int i = 0; i < containedBoxes[a].size(); i++){ // 判断我们拥有哪些盒子have[containedBoxes[a][i]] = true;if(open[containedBoxes[a][i]] == true && !visited[containedBoxes[a][i]]){q.push(containedBoxes[a][i]);visited[containedBoxes[a][i]] = true;} }maxx += candies[a]; // 累加当前盒子中的糖果数}return maxx;}
};

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

No.65 Vue---Axios 网络请求、Axios 网络的请求封装、网络请求跨域解决方案

一、Axios 网络请求Axios 是一个基于 promise 的网络请求库。1.1 安装ctrl + c :停止服务。 安装:npm install -save axios 安装完启动原来的服务:npm run serve 1.2 引入局部引用:import axios from axios; //局部引用 全局引用: 1.3 get请求方式//get請求方式axios({met…

我的博客开启啦

由于微信访问限制,请长按识别下方二维码跳转下载

FastAPI复杂查询终极指南:告别if-else的现代化过滤架构

title: FastAPI复杂查询终极指南:告别if-else的现代化过滤架构 date: 2025/3/14 updated: 2025/3/14 author: cmdragon excerpt: 本文系统讲解FastAPI中复杂查询条件的构建方法,涵盖参数验证、动态过滤、安全防护等18个核心技术点。通过引入策略模式、声明式编程等技术,彻…

基于Ollama本地部署DeepSeek-r1:7b大语言模型

1、概述随着人工智能技术的飞速发展,越来越多的开发者和企业开始关注大语言模型(LLM)。这些模型以其强大的自然语言处理能力,在文本生成、问答、翻译、分类等多种任务中表现出色。然而,在实际使用中,许多人会遇到如何快速且高效地部署这些模型的问题。本文将介绍如何通过…

web116笔记(misc+lfi)

访问题目是一个视频,源码也没有什么有用信息 提示:misc+lfi 下载视频,使用 010editor 打开,发现存在 png 图片的数据,搜索另存为 过滤了蛮多的,不过没有过滤flag ,也没有过滤 filter 尝试构造语句?file=php://filter/resource=flag.php (直接读取) 如果没有设置 fil…

具身智能

Topic I: 3D VIsion Topic II: Robotics Topic IV: Reinforcement learning Linear Algebra Vector Space 向量空间Linear Combination 线性组合\(w=a_1v_1+a_2v_2+...+a_nv_n=\sum_i a_iv_i\)Span of Vectors\(v_i \in V_m\), \(w \in V_m\)Infinite-Ddimensional Vector Spac…

python的jieba

jieba 是一个广泛使用的 Python 中文分词库,主要用于将中文文本切分成独立的词语。 https://github.com/fxsjy/jieba 安装pip install jieba使用 (1)分词import jieba # 分词 text = "我爱自然语言处理" words = jieba.cut(text, cut_all=False) # 精确模式 prin…

3. 创建一个菜单组件-DeepSeek辅助编程

在deepseek中输入: 创建一个vue组件 组件实现菜单的功能 需要让调用该组件是可以自定义一些属性:mode:horizontal横向显示/vertical纵向显示,background-color,text-color,active-text-color,model:通过该model绑定菜单/model为MenuItem的数组 MenuItem由这些参数构成:inde…

微信支付相关配置

公众号相关配置 地址:https://mp.weixin.qq.com/一、获取用户openid相关配置 二、获取开发者ID(AppID)/开发者密码(AppSecret) 微信支付相关配置 地址:https://pay.weixin.qq.com/需要先申请开通支付产品微信支付相关参数获取: 一:获取商户号(商户号mach_id)三、获取证书…

华为开发者空间:基于DeepSeek+Cherry Studio构建模拟面试助手

通过实际操作,让开发者熟悉如何通过云主机部署DeepSeek,以及如何将DeepSeek与Cherry Studio结合起来帮助我们解决一些实际的问题。本文分享自华为云社区《华为开发者空间:基于DeepSeek+Cherry Studio构建模拟面试助手》,作者:开发者空间小蜜蜂。 1 案例介绍 CherryStudio …

​信创环境元宇宙应用:3种虚拟团队管理工具前瞻测评

随着信息技术的不断发展,信创环境下的元宇宙应用正逐渐成为各行业关注的焦点。在这个虚拟的世界中,虚拟团队的管理变得至关重要。本文将对三种虚拟团队管理工具进行前瞻测评,探讨它们在信创环境元宇宙应用中的优势和潜在挑战。 信创国产化项目管理解决方案 禅道是一款国产的…