目錄
- T1. 棧的基本操作
- T2. stack or queue
- 思路分析
- T3. 合影效果
- T4. 發型糟糕的一天
- 思路分析
T1. 棧的基本操作
題目鏈接:SOJ D1188
此題為 2022 年 6 月三級第二題僅有棧操作的版本,見 2022 年 6 月青少年軟編等考 C 語言三級真題解析中的 T2。
T2. stack or queue
題目鏈接:SOJ D1211
棧和隊列都是常用的線性結構,它們都提供兩個操作:
Push
:加入一個元素。Pop
:彈出一個元素。
不同的是,棧是先進后出,而隊列則是先進先出。給出一個線性結構的進出順序,判定這個結構是棧還是隊列。
時間限制:1 s
內存限制:64 MB
- 輸入
第一行輸入一個整數 t t t,代表有 t t t 組測試數據。
對于每組測試數據,第一行輸入一個整數 n n n,代表操作的次數。
隨后輸入 n n n 行,每行包含兩個整數 t y p e v a l type\ val type val。當 t y p e = 1 type = 1 type=1 時,表示該次操作為 p u s h push push 操作, v a l val val 表示進入的數字。當 t y p e = 2 type=2 type=2 時,表示該次操作為 p o p pop pop 操作, v a l val val 代表出來的數字, 3 ≤ n ≤ 2000 3\le n\le 2000 3≤n≤2000。 - 輸出
每組測試數據輸出一行。輸出該組數據對應的線性結構,Stack
或者Queue
。題目保證是棧或者隊列的一種。 - 樣例輸入
2 6 1 1 1 2 1 3 2 3 2 2 2 1 4 1 1 1 2 2 1 2 2
- 樣例輸出
Stack Queue
思路分析
此題考查棧與隊列的模擬,屬于基礎題。
需要分析清楚如何區分棧和隊列,容易想到,對于彈出 x x x 的操作,
- 如果棧頂元素不是 x x x,那么一定是隊列;
- 如果棧頂元素是 x x x,并且隊首元素不是 x x x,那么一定是棧;
- 否則,根據當前信息尚不能區分,則分別執行出棧和出隊操作即可。
/** Name: T2.cpp* Problem: stack or queue* Author: Teacher Gao.* Date&Time: 2025/04/06 16:48*/#include <bits/stdc++.h>using namespace std;int main()
{ios::sync_with_stdio(false);cin.tie(