铁轨》:
- 心中必须有栈的模型——人”,用假指针模“拟进出。(书上的变量没指明含义!)
- (是否可取)&&(取出再操作)
#include<stdio.h>
#define MAXN 1000+10
int main()
{
int target[MAXN],stack[MAXN],n;
while (scanf("%d",&n)==1)
{
int i,ok=1,in=1,p_target=1,top=0;
for(i=1; i<=n; ++i) { stack[i]=0;scanf("%d",target+i); }
while(p_target<=n)
{
if (in==target[p_target]) { ++in;++p_target; }
else if (top && stack[top]==target[p_target]) { --top;++p_target; } /*先判断是否可取*/
else if (in<=n) stack[++top]=in++;
else { ok=0;break; }
}
printf("%s\n",ok?"Yes":"No");
}
return 0;
}