思路:
一开始一直没有什么想法,一直试图从相邻的弹出的数的数据范围上去着手(的确是格局小了
然后度娘了一下,原来这种题目,完全可以借助一个辅栈,把题目所给的弹出顺序倒着存在一个辅栈中,每次入栈都判断一下是否是辅栈的栈顶,如果是的话就弹出。
这道题目在写法上并不困难,主要是思路,但是现在想想判断的工作完全交给计算机去处理,好像是比较合理的,可能因为之前没有接触过,所以导致很长一段时间都没有什么想法。
#include#include using namespace std; int n,a[111]; struct STACK { int top,data[1111111]; void init() { top=0; } int size() { return top; } void pop() { top--; } void push(const int &x) { top++; data[top]=x; } }st1,st2; int main() { cin>>n; for(int i=1;i<=n;i++) { int k; char c; cin>>k; for(int i=1;i<=k;i++) { cin>>c; st1.data[k+1-i]=c-'0'; //cout<<"st1.data[k+1-i]="< 更系统化的形式:
#include#include using namespace std; int n,a[111]; struct STACK { int cnt,data[1111111]; void init() { cnt=0; } int top() { return data[cnt]; } int size() { return cnt; } void pop() { cnt--; } void push(const int &x) { cnt++; data[cnt]=x; } }st1,st2; int main() { cin>>n; for(int i=1;i<=n;i++) { int k; char c; cin>>k; for(int i=1;i<=k;i++) { cin>>c; st1.data[k+1-i]=c-'0'; //cout<<"st1.data[k+1-i]="<



