【PAT A1051】【棧/模擬】
題目大意:給你棧的容量M和k個長度為n的序列,問你將1,2,…,n依次入棧,這k個序列所代表的出棧順序是否可行。
我一開始覺得可行序列可能遵循某種規律,但是找了半天沒有發現。看了題解之後才驚覺模擬就可以解決。TvT
在將n個元素依次入棧的過程中,判斷當前要入棧的元素是否與需要判斷的出棧序列裡的元素相同,如果相同的話就依次出棧。
棧滿,或者最後棧中仍有元素則輸出“NO”,否則就是“YES”
【我實在是個很差的講題人TvT 這個模擬感覺挺裸的,不知道該咋個描述】
#include <cstdio>
#include <iostream>
#include <stack>
using namespace std;
int ps[1005];
stack<int> s;
int main()
{
int M, N, K;
scanf("%d %d %d", &M, &N, &K);
while (K--)
{
for (int i = 0; i < N; i++)
{
scanf("%d", &ps[i]);
}
int cnt = 0;
bool flag = true;
for (int i = 1; i <= N; i++)
{
if (s.size() == M)
{
flag = false;
break;
}
s.push(i);
while (!s.empty() && s.top() == ps[cnt])
{
cnt++;
s.pop();
}
}
if (flag == true && s.empty())
{
printf("YES\n");
}
else
{
printf("NO\n");
}
while (!s.empty())
{
s.pop();
}
}
return 0;
}
需要注意的是在取top和pop的時候判斷棧非空,每組測試之間將棧清空。
相關文章
- PAT-B 1085 PAT單位排行【模擬】
- java:模擬棧操作Java
- PAT-B 1027 列印沙漏 【模擬】
- PAT-B 1058 選擇題 【模擬】
- PAT-B 1061 判斷題【模擬】
- PAT-B 1067 試密碼【模擬】密碼
- PAT-B 1071 小賭怡情【模擬】
- PAT-B 1054 求平均值 【模擬】
- PAT-B 1072 開學寄語【模擬】
- PAT-B 1081 檢查密碼【模擬】密碼
- PAT-B 1084 外觀數列 【模擬】
- PAT-B 1018 錘子剪刀布 【模擬】
- PAT甲級-1014. Waiting in Line (30)(模擬)AI
- PAT-B 1019 數字黑洞【陣列+模擬】陣列
- PAT-B 1017 A除以B【模擬 大數除法】
- PAT-B 1059 C語言競賽【模擬】C語言
- PAT B1009 說反話(簡單模擬)
- PAT-B 1024 科學計數法【模擬+字串】字串
- PAT-B 1077 互評成績計算【模擬】
- PAT-B 1012 數字分類【簡單模擬】
- PAT甲級-1140. Look-and-say Sequence (20)(模擬)
- PHP使用棧完成高階計算器-接上文模擬棧PHP
- PAT-B 1025 反轉連結串列【模擬+對映】
- PAT-B 1069 微博轉發抽獎【模擬+集合】
- LeetCode-20. 有效的括號(棧模擬)LeetCode
- 棧的模擬實現及常見演算法演算法
- PAT-B 1008 陣列元素迴圈右移問題【簡單模擬】陣列
- 2021看雪SDC議題回顧 | 基於模擬模擬的藍芽協議棧漏洞挖掘藍芽協議
- PAT-B 1001 害死人不償命的(3n+1)猜想【模擬】
- PAT B1036 跟奧巴馬一起程式設計(簡單模擬)程式設計
- PAT B1001 害死人不償命的(3n+1)猜想(簡單模擬)
- gothinkster/realworld:模擬Medium部落格的全棧技術學習原始碼Go全棧原始碼
- 模擬
- 2024.11.20 NOIP模擬 - 模擬賽記錄
- 10.6 模擬賽(NOIP 模擬賽 #9)
- 聯賽模擬測試18 A. 施工 單調佇列(棧)優化DP佇列優化
- 遞迴轉非遞迴 棧模擬 Recursive to Non-recursive stack simulated 總結遞迴
- PAT B1022 D進位制的A+B(進位制轉換板題,簡單模擬)