这里使用了stack。因为我不知道原题,所以我只能告诉你几个if、的意思。
第一个if,当a和target[b]相等就跳过target[b],当不相等的时候,再执行下面的elseif。
else if(!s.empty()&&s.top()==target[b]){s.pop();b++;}先判断栈stack非空,并且栈顶元素和target[b]不相等。然后弹出栈顶元素。
else if(a<=n) s.push(a++);如果a小于n,那么将a压入栈后并让a自增1.
else {ok=0;break;}如果前几个条件都不满足,那么将ok的值改为0,然后退出循环。
嘛我建议你还是把题目发出来。具体思路【或者说为什么这么写】但看代码看不出来。