题目描述:
题目详情 - 02-线性结构4 Pop Sequence (25 分) (pintia.cn)https://pintia.cn/problem-sets/1497448825169559552/problems/1500420206048747522对于序列的第一个元素N1:
把小于N1的所有元素push入栈(入栈时要判断:栈是否满),再把N1pop出来。
【注意:我们需要一个数组num来存放数字i是否入过栈,num[i]=1表示已经入过了,=0则没有】
对于序列的第n个元素:
和此时栈顶元素比较大小:
若等于此时的栈顶元素:把栈顶pop出来若大于此时的栈顶元素:
- 把当前比栈顶元素小的值全都push进去(入栈时要判断:栈是否满)如果已经push过就不要再push了pop出栈顶元素
若小于此时栈顶元素:直接flag=false,输出NO AC代码:
注意初始化!每组测试数据开始前要先把栈清空!
#include#include #include #include using namespace std; int compare(int x,int y){ if(x>y) return 1; if(x mystack; char num[1002]; int a[1002]; int m,n,k,item; cin>>m>>n>>k; while(k--){ while(!mystack.empty()) mystack.pop(); flag=true; memset(num,'0',1002); for(int i=0;i >a[i]; } for(int i=1;i<=a[0];i++){ if(mystack.size()==m){//入栈前先判断:栈是否满 flag=false; break; } mystack.push(i); num[i]='1'; } mystack.pop(); for(int i=1;i



