pat 1051 pop sequence

来源:互联网 发布:容颜变老软件 编辑:程序博客网 时间:2024/04/30 19:55

这题对于自己,意义不小,编程能力还是如此之弱!sigh!  用cur标记入栈序列的最大值,逐个扫描出栈序列x,当x与当前栈顶元素不一致(大于或小于)时就将cur++入栈(即使是x大于栈顶元素也将cur++入栈,它必将超过栈容量)。当x与当前栈顶元素一致时,将栈顶元素出栈即可。若栈内元素超过栈容量,则不合法。

AC代码:

#include<iostream>#include<stack>using namespace std;int main(){int n,m,k,i,j,x;//freopen("C:\\Documents and Settings\\Administrator\\桌面\\input.txt","r",stdin);scanf("%d%d%d",&m,&n,&k);for(i=0;i<k;i++){stack<int> c;int cur=1,fg=1;for(j=0;j<n;j++){scanf("%d",&x);if(fg){while(c.empty()||c.top()!=x){c.push(cur);if(c.size()>m){fg=0;break;}cur++;}if(fg&&c.size()>=1&&c.top()==x)c.pop();}}if(fg==0)printf("NO\n");else printf("YES\n");}return 0;}


 

原创粉丝点击