出棧順序(棧和佇列)B
阿新 • • 發佈:2018-12-30
<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; }