題目描述:輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。
輸入:每個測試案例包括3行:
第一行為1個整數n(1<=n<=100000),表示序列的長度。
第二行包含n個整數,表示棧的壓入順序。
第三行包含n個整數,表示棧的彈出順序。
輸出:對應每個測試案例,如果第二個序列是第乙個序列的彈出序列輸出yes,否則輸出no。
樣例輸入:
5
1 2 3 4 5
4 5 3 2 1
5
1 2 3 4 5
4 3 5 1 2
樣例輸出:
yes
no
#include #include #include #include using namespace std;
bool ispoporder(const vector&push, const vector&pop, int length)
if(stack.top() != *inextpop)
break;
stack.pop();
++inextpop;
}if(stack.empty() && inextpop - pop.begin() == length)//這是if 不是while
sequence = true;
return sequence;}
int main(int argc, char *argv)
for(i = 0; i < n; ++i)
if(ispoporder(push, pop, n))
printf("yes\n");
else
printf("no\n");
}return 0;
}
棧的壓入彈出序列
題目 輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓棧序列,序列4,5,3,2,1是該棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。解答 可以用乙個輔助的棧來儲存入...
棧的壓入 彈出序列
輸入兩個整數序列,第乙個序列表示棧的壓入順序,判斷兩個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1 2 3 4 5是某棧的壓棧序列,序列4 5 3 2 1是該壓棧序列對應的乙個彈出序列,但4 3 5 1 2就不可能是該壓棧序列的彈出序列。bool ispoporder cons...
棧的壓入彈出序列
1.問題描述 輸入兩個整數序列,第乙個序列表示棧的壓入序列,請判斷第二個序列是否為該棧的彈出序列。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓棧序列,序列4,5,3,2,1是該棧序列對應的乙個彈出序列,但 4,3,5,1,2,就不可能是該壓棧序列的彈出序列。來自 劍指offer...