铁轨问题 用栈解决
#include<cstdio>
#include<stack>
using namespace std;
const int MAXN=1000+10;
int n,target[MAXN];
int main()
{
while(scanf("%d",&n)==1)
{
stack<int> s;
int A=1,B=1;
for(int i=1;i<=n;i++)
scanf("%d",&target[i]);
int ok=1;
while(B<=n)
{
if(A==target[B])
{A++;
B++;
}
else if(!s.empty()&&s.top()==target[B])
{s.pop();
B++;
}
else if(A<=n)
{s.push(A);
A++;
}
else{ok=0;break;}
}
printf("%s\n",ok?"yes":"no");
}
return 0;
}
浙公网安备 33010602011771号