| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
鄙人提一个比较愚蠢的观点In Reply To:是不是这个意思?判断是否是栈序列,所有比n小并且在n后的数字,必须按照降序排列 Posted by:yangguo981 at 2006-04-09 14:16:08 这个题目正规的是要用堆栈来做的,因为堆栈存储数据的规则是“后进先出,先进后出”但是 这个题目可以建立两个数组来做为“堆栈”要提出元素就只能从数组的最后一为提出:
代码如下:
#include<iostream>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)&&n)
{
while(1)
{
int sh[1010],m=0;
sh[m++]=0;
int ch[1010];
int yes[1010];
memset(yes,1,sizeof(yes));
int i=0;
for(i=0;i<n;i++)
{
scanf("%d",&ch[i]);
if(ch[i]==0)
break;
}
if(i==0)
break;
int no=0;
for(i=0;i<n;i++)
{
yes[ch[i]]=0;
for(int j=sh[m-1]+1;j<ch[i];j++)
if(yes[j])
sh[m++]=j;
if(ch[i]==sh[m-1])
m--;
else if(ch[i]<sh[m-1])
no=1;
if(no)
break;
}
if(no)
printf("No\n");
else printf("Yes\n");
}
}
return 0;
}
现在是PE 改一下就好-----
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator