比下面简单(自动打栈是真滴好玩)

天生我材必有难,千金散尽还债来  •  10个月前


include

include

using namespace std; int main() {

stack<int> a,b,c;
int n,d[100000],v=0;
cin>>n;
for(int k=0; k<n; k++) {
	int x;
	cin>>x;
	d[k]=x;
}

for(int k=n; k>=1; k--) {
	a.push(k);
}
for(int k=1; k<=n; k++) {
	if(a.size()!=0) {
		b.push(a.top());
		a.pop();
	}
	while(b.top()==d[v]) {
		b.pop();
		v++;
		if(b.size()==0){
			break;
		}
	}
}
if(v==n) {
	cout<<"YES";
} else {
	cout<<"NO";
}
return 0;

}


评论:

include<bits/stdc++.h>

using namespace std; int a[100001],b[100001],t=0,n,l=1; int main(){

cin>>n;
for(int i=1;i<=n;i++)
	cin>>b[i];
for(int i=1;i<=n;i++){
	t++;a[t]=i;
	while(t>0&&b[l]==a[t]){
		l++;t--;
	}
}
if(t==0)
	cout<<"YES";
else 
	cout<<"NO"; 

}


许熠谦  •  10个月前

请先登录,才能进行评论