數據結構 | 棧:1051
阿新 • • 發佈:2018-03-10
bsp tdi empty 遇到 讓其 我們 ac代碼 style pac
這是一個棧的模擬題,同時“通過出棧序列判斷是否合理”這樣的考法在考研中經常遇到,也很有可能被命致為考研算法題,這類題的解題方法值得深究。
1、既然是模擬入棧出棧行為,我們就讓其不停的入棧,這是一個外循環。
2、如果入棧後超出了棧的規格,就退出循環。
3、在控制非空的條件下,如果棧頂與給定序列相同,那麽說明出棧行為發生了,出棧。並且回到第三步再進行判斷。
最後只要判斷序列是否被模擬完即可。
AC代碼:
#include <stdio.h> #include <stack> #include <algorithm> using namespace std;int main(){ // freopen("1051.txt","r",stdin); int m,n,k,i; int a[1001]; scanf("%d%d%d",&m,&n,&k); while(k--) { int cur=1; stack<int> s; for(i=1;i<=n;i++) scanf("%d",&a[i]); for(i=1;i<=n;i++){ s.push(i);if(s.size()>m) break; while(!s.empty() && s.top()==a[cur]){ s.pop(); cur++; } } puts(cur==n+1?"YES":"NO"); } return 0; }
數據結構 | 棧:1051