您的位置:首页 > 产品设计 > UI/UE

1051. Pop Sequence (25)

2017-05-04 17:23 423 查看
//关键点:进栈顺序是now=1,2...n ;当栈顶没有当前number,now从1开始进栈;反之,出栈
#include<iostream>
using namespace std;

int main(){
int stack[1005]={0};//数组表示栈
int top;
int m,n,k;
cin>>m>>n>>k;

for(int i=1;i<=k;i++){
top=0; int now=1;
//top和now是数组stack的键值对,此处从1开始存贮。若从0开始,此处top=-1 ,while变为 flag&&(top==-1 || stack[top]!=number)
bool flag=true;//表示栈未满
int number;
//1、n个节点,每个都要经过入栈和出栈
for(int j=1;j<=n;j++){
cin>>number;
//入栈
while(flag&&(stack[top]!=number)){ //stack[top]!=number表示目前栈里没有number
stack[++top]=now;//为了while里的top指向当前栈顶元素,要先自增,再赋值
if(top>m){//0废弃,有效下标1到m
flag=false;
break;
}
now++;
}
//出栈
if(flag&&top>=1&&stack[top]==number)
top--;
}

//2、判断这n个节点的出栈队列是否合法
if(flag) cout<<"YES"<<endl;
else cout<<"NO"<<endl;

}

return 0;
}
转自:http://blog.csdn.net/ccdllyy/article/details/52658415
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: