标签:

Input
Output
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
#include <iostream>
#include <stdio.h>
#include <string>
#include <cstring>
#include <stack>
#include <cmath>
#define N 1009
using namespace std;
int a[N];
int n;
int b[N];
int main()
{
int n;
while(scanf("%d",&n),n)
{
while(scanf("%d",&a[0]),a[0])
{
for(int i=1;i<n;i++)
scanf("%d",&a[i]);
stack<int>q;
int j=0;
for(int i=1,k=0;i<=n&&k<n;i++,k++)
{
q.push(i);
while(q.size() && q.top()==a[j])
{
j++;
q.pop();
}
}
// int j=0;
// for(int i=1,k=0;i<=n&&k<n;i++,k++)
// {
// b[k]=i;
// while(a[j]==b[k])
// {
// k--;
// j++;
// if(k<0) break;
// }
//
// }
//
// //cout<<"j="<<j<<endl;
if(j==n)
cout<<"Yes\n";
else
cout<<"No\n";
}
cout<<endl;
}
return 0;
}
#include <iostream>
#include <stdio.h>
#include <string>
#include <cstring>
#include <stack>
#include <cmath>
#define N 1009
using namespace std;
int a[N];
int n;
int b[N];
int main()
{
int n;
while(scanf("%d",&n),n)
{
while(scanf("%d",&a[0]),a[0])
{
for(int i=1;i<n;i++)
scanf("%d",&a[i]);
stack<int>q;
int j=0;
// for(int i=1,k=0;i<=n&&k<n;i++,k++)
// {
// q.push(i);
// while(q.size() && q.top()==a[j])
// {
// j++;
// q.pop();
// }
// }
//int j=0;
for(int i=1,k=0;i<=n&&k<n;i++,k++)
{
b[k]=i;
while(a[j]==b[k])
{
k--;
j++;
if(k<0) break;
}
}
// //cout<<"j="<<j<<endl;
if(j==n)
cout<<"Yes\n";
else
cout<<"No\n";
}
cout<<endl;
}
return 0;
}
两种方式都可行。
标签:
原文地址:http://blog.csdn.net/wust_zjx/article/details/45034449