L2-037 包裝機 (分數25)(詳解)

題目鏈接——L2-037 包裝機

問題分析

這個題目就是模擬了物品在傳送帶和筐之間的傳送過程。傳送帶用隊列模擬,筐用棧模擬。

輸入

3 4 4
GPLT
PATA
OMSA
3 2 3 0 1 2 0 2 2 0 -1

輸出

根據上述操作,輸出的物品順序是:

MATA

樣例分析

初始狀態:
  • 筐(棧):空
  • 行1G P L T
  • 行2P A T A
  • 行3O M S A
操作步驟:
  1. 3(取行3的O入筐)→ 筐:[O]
  2. 2(取行2的P入筐)→ 筐:[O, P]
  3. 3(取行3的M入筐)→ 筐:[O, P, M]
  4. 0(輸出筐頂M)→ 輸出:M,筐:[O, P]
  5. 1(取行1的G入筐)→ 筐:[O, P, G]
  6. 2(取行2的A入筐)→ 筐:[O, P, G, A]
  7. 0(輸出筐頂A)→ 輸出:A,筐:[O, P, G]
  8. 2(取行2的T入筐)→ 筐:[O, P, G, T]
  9. 2(取行2的A,但筐已滿)→ 先輸出筐頂T,再入A
    → 輸出:T,筐:[O, P, G, A]
  10. 0(輸出筐頂A)→ 輸出:A,筐:[O, P, G]
最終輸出:
  • 按順序輸出的字符:M A T AMATA

解題思路

  1. 數據結構選擇

    • 使用隊列數組 queue<char> q[n + 1] 存儲每行傳送帶上的物品。
    • 使用棧 stack<char> stk 模擬筐的存儲。
  2. 輸入處理

    • 輸入 nmmx,分別表示傳送帶行數、每行物品數和筐的最大容量。
    • 讀取每行傳送帶的物品,依次存入對應的隊列。
  3. 指令處理

    • 循環讀取指令 id
      • 如果 id == -1,結束程序。
      • 如果 id == 0,從筐頂取物并輸出(若筐不為空)。
      • 如果 id > 0,從第 id 行傳送帶取物放入筐(若筐滿則先取筐頂物品輸出)。
  4. 關鍵點

    • 注意筐的容量限制,滿時需先取再放。
    • 注意傳送帶隊列和筐的空狀態,避免非法操作。

具體見代碼

#include<bits/stdc++.h>
#define debug(x) cout<<endl<<"===>"<<#x<<"="<<x<<endl;
#define output(x) cout<<x<<endl;
#define int long long
using namespace std;void solve() {int n, m, mx;//n行,一行m個物品,筐的最大容量cin >> n >> m >> mx;stack<char> stk;//模擬筐的棧queue<char> q[n + 1];//每一行就是一個隊列(下標從1開始)for(int i = 1; i <= n; i++) {string s;//一行的物品cin >> s;for(char c : s) q[i].push(c);}int id;while(cin >> id) {if(id == -1) break;//-1即退出if(id == 0) {//輸出框頂部if(stk.empty()) continue;//注意筐空//輸出筐頂,出棧cout << stk.top();stk.pop();} else {if(q[id].empty()) continue;//注意隊列空//將隊列的東西放入筐之前,檢查是否滿了if(stk.size() == mx) {//如果滿了,就取筐頂cout << stk.top();stk.pop();}//放筐中,出隊列stk.push(q[id].front());q[id].pop();}}
}signed main() {ios::sync_with_stdio(0);cin.tie(0);//while(1)//個人習慣,方便調試solve();return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/75085.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75085.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/75085.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

機器學習的一百個概念(4)下采樣

前言 本文隸屬于專欄《機器學習的一百個概念》&#xff0c;該專欄為筆者原創&#xff0c;引用請注明來源&#xff0c;不足和錯誤之處請在評論區幫忙指出&#xff0c;謝謝&#xff01; 本專欄目錄結構和參考文獻請見[《機器學習的一百個概念》 ima 知識庫 知識庫廣場搜索&…

qt6下配置qopengl

qt部件選擇 Qt 6&#xff1a;需要手動選擇 Qt Shader Tools 和 Qt 5 Compatibility Module&#xff08;如果需要兼容舊代碼&#xff09; cmake文件 cmake_minimum_required(VERSION 3.16) # Qt6 推薦最低 CMake 3.16 project(myself VERSION 0.1 LANGUAGES CXX)set(CMAKE_A…

數據安全系列4:密碼技術的應用-接口調用的身份識別

傳送門 數據安全系列1&#xff1a;開篇 數據安全系列2&#xff1a;單向散列函數概念 數據安全系列3&#xff1a;密碼技術概述 什么是認證&#xff1f; 一談到認證&#xff0c;多數人的反應可能就是"用戶認證" 。就是應用系統如何識別用戶的身份&#xff0c;直接…

STL之map和set

1. 關聯式容器 vector、list、deque、 forward_list(C11)等&#xff0c;這些容器統稱為序列式容器&#xff0c;因為其底層為線性序列的數據結構&#xff0c;里面存儲的是元素本身。 關聯式容器也是用來存儲數據的&#xff0c;與序列式容器不同的是&#xff0c;其里面存儲的是結…

Vue3 其它API Teleport 傳送門

Vue3 其它API Teleport 傳送門 在定義一個模態框時&#xff0c;父組件的filter屬性會影響子組件的position屬性&#xff0c;導致模態框定位錯誤使用Teleport解決這個問題把模態框代碼傳送到body標簽下

C++練習

1.將File練習題&#xff0c;內部的FILE*描述符&#xff0c;改成int描述符 2。寫一個類Fifo管道類。提高難度&#xff0c;什么都不提示。只要求&#xff1a;使用自己編寫的Fifo類對象&#xff0c;實現2個終端之間互相聊天 file.cpp #include <iostream> #include <c…

《Python Web網站部署應知應會》No4:基于Flask的調用AI大模型的高性能博客網站的設計思路和實戰(上)

基于Flask的調用AI大模型的高性能博客網站的設計思路和實戰&#xff08;上&#xff09; 摘要 本文詳細探討了一個基于Flask框架的高性能博客系統的設計與實現&#xff0c;該系統集成了本地AI大模型生成內容的功能。我們重點關注如何在高并發、高負載狀態下保持系統的高性能和…

實現一個簡易版的前端監控 SDK

【簡易版的前端監控系統】 1、Promise的錯誤如何監控&#xff1f;–promise不是所有都是接口請求 2、接口的報錯如何監控&#xff1f;–全局監控sdk&#xff0c;不改動公共的請求方法、不改動業務代碼&#xff1b;一般接口使用axios請求 3、資源的報錯如何監控&#xff1f; 4、…

【操作系統】軟中斷vs硬中斷

在操作系統中&#xff0c;中斷&#xff08;Interrupt&#xff09; 是 CPU 響應外部事件的重要機制&#xff0c;分為 硬中斷&#xff08;Hardware Interrupt&#xff09; 和 軟中斷&#xff08;Software Interrupt&#xff09;。它們的核心區別在于 觸發方式 和 處理機制。 1. 硬…

力扣刷題-熱題100題-第27題(c++、python)

21. 合并兩個有序鏈表 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/merge-two-sorted-lists/description/?envTypestudy-plan-v2&envIdtop-100-liked 常規法 創建一個新鏈表&#xff0c;遍歷list1與list2&#xff0c;將新鏈表指向list1與list2…

Python包下載路徑 Chrome用戶數據 修改到非C盤

查看 site-packages 是否能通過命令行完成&#xff1f; 可以&#xff0c;使用以下命令&#xff08;不需寫腳本&#xff09;&#xff1a; python -m site輸出包含&#xff1a; sys.path site-packages 路徑&#xff08;全局和用戶級&#xff09; 如果只想看安裝路徑&#…

【鴻蒙5.0】鴻蒙登錄界面 web嵌入(隱私頁面加載)

在鴻蒙應用中嵌入 Web 頁面并加載隱私頁面&#xff0c;可借助 WebView 組件來實現。以下是一個完整示例&#xff0c;展示如何在鴻蒙 ArkTS 里嵌入 Web 頁面并加載隱私政策頁面。 在 HarmonyOS 應用開發中&#xff0c;如果你希望嵌入一個網頁&#xff0c;并且特別關注隱私頁面加…

AI加Python的文本數據情感分析流程效果展示與代碼實現

本文所使用數據來自于梯田景區評價數據。 一、數據預處理 數據清洗 去除重復值、空值及無關字符(如表情符號、特殊符號等)。 提取中文文本,過濾非中文字符。 統一文本格式(如全角轉半角、繁體轉簡體)。 中文分詞與去停用詞 使用 jieba 分詞工具進行分詞。 加載自定義詞…

Microi吾碼界面設計引擎之基礎組件用法大全【內置組件篇·上】

&#x1f380;&#x1f380;&#x1f380; microi-pageengine 界面引擎系列 &#x1f380;&#x1f380;&#x1f380; 一、Microi吾碼&#xff1a;一款高效、靈活的低代碼開發開源框架【低代碼框架】 二、Vue3項目快速集成界面引擎 三、Vue3 界面設計插件 microi-pageengine …

【多線程】單例模式和阻塞隊列

目錄 一.單例模式 1. 餓漢模式 2. 懶漢模式 二.阻塞隊列 1. 阻塞隊列的概念 2. BlockingQueue接口 3.生產者-消費者模型 4.模擬生產者-消費者模型 一.單例模式 單例模式&#xff08;Singleton Pattern&#xff09;是一種常用的軟件設計模式&#xff0c;其核心思想是確保…

終值定理的推導與理解

終值定理的推導與理解 終值定理是控制理論和信號處理中的一個重要工具&#xff0c;它通過頻域的拉普拉斯變換來分析時間域函數的最終穩態值。具體來說&#xff0c;終值定理提供了一個簡便的方法&#xff0c;利用 F ( s ) F(s) F(s)&#xff08; f ( t ) f(t) f(t) 的拉普拉斯…

每日c/c++題 備戰藍橋杯(二分答案模版)

在算法學習中&#xff0c;二分答案算法是一種非常高效且常用的技巧。它的核心思想是通過不斷縮小搜索范圍&#xff0c;逐步逼近目標答案。相比傳統的暴力搜索&#xff0c;二分答案算法的時間復雜度通常為 O(logn)&#xff0c;特別適合處理大規模數據的查找問題。 本文將詳細介…

NLP高頻面試題(二十六)——RAG的retriever模塊作用,原理和目前存在的挑戰

在自然語言處理領域&#xff0c;檢索增強生成&#xff08;Retrieval-Augmented Generation&#xff0c;簡稱RAG&#xff09;是一種將信息檢索與文本生成相結合的技術&#xff0c;旨在提升模型的回答準確性和信息豐富度。其中&#xff0c;Retriever在RAG架構中扮演著關鍵角色&am…

第30周Java分布式入門 分布式基礎

分布式基礎課程筆記 一、什么是分布式&#xff1f; 1. 權威定義 分布式系統定義為&#xff1a;“利用物理架構形成多個自治的處理元素&#xff0c;不共享主內存&#xff0c;通過發送消息合作”。 2. 核心解釋 物理架構與處理元素 &#x1f31f; 多臺獨立服務器/電腦&#x…

Vuex狀態管理

Vuex Vuex是一個專為Vue.js應用程序開發的狀態管理模式。它采用集中式管理應用的所有組件狀態&#xff0c;并以相應的規則保證狀態以一種可預測的方式發生變化。&#xff08;類似于在前端的數據庫&#xff0c;這里的數據存儲在內存當中&#xff09; 一、安裝并配置 在項目的…