1. 程式人生 > >出棧順序(棧和佇列)B

出棧順序(棧和佇列)B

<center><h2>問題 B: 出棧順序(棧和佇列)</h2><span class="green">時間限制: </span>1 Sec  <span class="green">記憶體限制: </span>128 MB
<span class="green">提交: </span>41  <span class="green">解決: </span>9
[<a target=_blank href="http://202.194.119.110/submitpage.php?cid=1587&pid=1&langmask=0">提交</a>][<a target=_blank href="http://202.194.119.110/problemstatus.php?id=3002">狀態</a>][<a target=_blank href="http://202.194.119.110/bbs.php?pid=3002&cid=1587">討論版</a>]</center><h2>題目描述</h2><div class="content"><p>給出一個入棧序列,和一個出棧序列,判斷該出棧序列是否正確。</p><p></p></div><h2>輸入</h2><div class="content"><p>輸入包含三行,第一行為序列的長度N,第二行為N個數表示入棧順序,第三行同樣為N個數,表示出棧順序。我們保證這N個數字不相同。</p><p></p></div><h2>輸出</h2><div class="content"><p>如果該出棧序列正確,則輸出“Yes”,否則輸出“No”。</p><p></p></div><h2>樣例輸入</h2><pre class="content"><span class="sampledata">5
1 2 3 4 5
5 4 3 2 1</span>

樣例輸出

Yes

提示

 1、入棧過程中可以出棧


2、請使用C++編譯並提交

#include<stdio.h>
int panduan(int a[],int b[],int n)
{
    int i,j,k,t=1;
    for(i=0;i<n;i++)
        for(j=i+1;j<n;j++)
            for(k=j+1;k<n;k++)
            {
                if(a[i]<a[j]&&a[j]<a[k]&&b[j]<b[k]&&b[k]<b[i])
                {
                    t=0;
                    break;
                }
            }
            if(t==0)
                return 0;
            return 1;
}
int main()
{
    int i,n,a[9999],b[9999];
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(i=0;i<n;i++)
        scanf("%d",&b[i]);
    if(panduan(a,b,n)==1)
        printf("Yes\n");
    else
        printf("No\n");
    return 0;
}