c++用栈解决铁轨问题,这个算法竞赛书上的,while语句后的一堆if语句和if else语句起什么作用啊,求解

2025-04-13 02:15:23
推荐回答(1个)
回答1:

这里使用了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,然后退出循环。

嘛我建议你还是把题目发出来。具体思路【或者说为什么这么写】但看代码看不出来。