[jobdu]栈的压入、弹出序列

用一个栈辅助,模拟过程+判断就可以了。

#include <iostream>

#include <memory.h>

#include <stack>

#define LEN 100005

using namespace std;



int A[LEN];

int B[LEN];

int main()

{

    int n;

    while (cin >> n)

    {

        for (int i = 0; i < n; i++)

        {

            cin >> A[i];

        }

        for (int i = 0; i < n; i++)

        {

            cin >> B[i];

        }

        stack<int> st;

        int i = 0;

        int j = 0;

        while (true)

        {

            if (j == n)

            {

                cout << "Yes" << endl;

                break;

            }

            if (st.empty() || st.top() != B[j])

            {

                if (i == n)

                {

                    cout << "No" << endl;

                    break;

                }

                st.push(A[i]);

                i++;

            }

            else

            {

                st.pop();

                j++;

            }

        }

    }

    return 0;

}

  

你可能感兴趣的:(job)