合法的出棧序列

poj 1363 Rails
已知從1至n的數(shù)字序列,按順序入棧,每個數(shù)字入棧后即可出棧,也可在棧中 停留,等待后面的數(shù)字入棧出棧后,該數(shù)字再出棧,求該數(shù)字序列的某出棧 序列是否合法?

算法設計:使用棧與隊列模擬入棧、出棧過程

同時使用一個隊列與一個棧來解決該問題,設隊列order與棧為S。隊列order存儲待判斷是否合法 的出棧序列,使用棧S用來模擬出棧與入棧的過程。
1.按照1-n的順序,將元素push進入棧S中:
2.每push一個元素,即檢查棧頂S.top()是否與隊列頭部元素order.front()相同。
3.如果相同則同時彈出棧頂元素與隊列頭部元素,直到??栈驐m斉c隊列頭部元素不同。 若最終棧為空,則說明序列合法,否則不合法。

EG.1





#include<stack>
#include<queue>
bool check_is_valid_order(std::queue<int> &order){
    std::stack<int> s;//s為模擬棧
    int n = order.size();//n為序列長度,將1-n按順序入棧
    for(int i = 1; 1<= n;i++){
        s.push(i);//將i入棧
        while(!s.empty()&&order.front() == s.top()){
            s.pop();
            order.pop();
        }
    }
if(!s.empty()){
    return false;//如果最終棧不空,則說明序列不合法!
}
return true;
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評論 19 139
  • 從三月份找實習到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,813評論 11 349
  • 出了宿舍樓,兩點多,秋天了,天氣轉涼,天氣預報一點也不準,說好的晴天,不一會就陰風陣陣,??!假裝沒有作業(yè)沒有論文...
    Daisy1閱讀 284評論 0 0

友情鏈接更多精彩內容