入栈出栈

void popSeq(list<int>in,stack<int> st,vector<int> out,vector<vector<int>>& res,int len)
{
    if (out.size() == len) {
        res.push_back(out);
        return;
    }
    //出栈
    if (st.size() > 0) {
        out.push_back(st.top());
        st.pop();
        popSeq(in, st, out, res, len);
        st.push(out.back());
        out.pop_back();
    }
    //入栈
    if (in.size() > 0) {
        st.push(in.front());
        in.pop_front();
        popSeq(in,st,out,res,len);
        in.push_front(st.top());
        st.pop();
    }
 

 

posted @ 2019-08-01 23:14  unique_ptr  阅读(182)  评论(0编辑  收藏  举报