Sample Input
5 1 2 3 4 5 5 4 1 2 3 0 6 6 5 4 3 2 1 0 0
Sample Output
Yes No Yes
題意,告訴你一個隊列,以棧的方式進行操作,看那個輸出順序是錯誤的。這種題用c++,裏面的stack解決起來被叫方便,但是有個坑點是,每次查詢完,得清空stack,不然容易wr。
#include <iostream>
#include <stack>
using namespace std;
int main(){
int n;
string s;
int a[100000],flag=0;
while(1)
{ cin>>n;
if(n==0)
break;
if(flag!=0)
cout<<endl;
flag=1;
while(1)
{
int j,k;
stack<int> ss;
k=0;
for(int i=0;i<n;i++)
{
cin>>a[i];
if(a[i]==0)
break;
}
if(a[0]==0)
break;
for(int i=1;i<=n;i++)
{
ss.push(i);
while(!ss.empty()&&ss.top()==a[k])
{
k++;
// cout<<ss.top()<<" ";
ss.pop();
}
}
if(k==n)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}
return 0;
}