給定n個元素的輸入順序和輸出順序,需要你判定這是一個棧還是隊列?
輸入 有多組測試數據。
每組數據第一行有一個整數n,表示元素個數。
第二行有n個整數,表示輸入順序,第三行有n個整數,表示輸出順序。
后臺數據保證2 <= n <= 10,給定的n個元素均不相同。
輸出 若有可能是一個隊列的操作,則輸出0。
若是一個棧的操作,則輸出1。
數據保證有解。
樣例輸入 2 1 2 2 1 3 2 1 3 2 3 1 3 1 2 3 1 2 3 樣例輸出 1 1 0
#include<cstdio>#include<cstring>#include<cmath>#include<stack>#include<queue>#include<algorithm>using namespace std;#define INF 0x3f3f3f3f#define ll long longint main(){ int n; while (~scanf("%d",&n)){ queue<int> s; int a[20]; int b[20]; for (int i= 0; i < n; ++i){ scanf("%d",&a[i]); } for (int i= 0; i < n; ++i){ scanf("%d",&b[i]); } int k = 0; for (int i= 0; i < n; ++i){ if (a[i] == b[i]){ k++; while (!s.empty()){ if (s.front() == b[k]){ s.pop(); k++; } else break; } } else s.push(a[i]); } if (s.empty()) 隊列 先入先出 判斷每個數組元素是否相等即可 這是一道水題 完全沒必要在競賽的情況下小題大做 一定要好好理解這些算法新聞熱點
疑難解答