出栈顺序(c++)-创新互联

有人说想要有解释的代码。

创新互联专注于善左企业网站建设,成都响应式网站建设公司,成都做商城网站。善左网站建设公司,为善左等地区提供建站服务。全流程按需网站策划,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

今天他来了: 

描述

栈作为一种数据结构,它按照后进先出的原则存储数据.

输入

输入数据包含两部分

1.第一行一个整数N 范围[1,10]

2.第二行N个数字,每个数字范围 [1,100]

输出

如果这N个数字按照栈的方式存储,请你判断能否按照第二行的顺序出栈

如果可以,请输出"Yes"

如果不可以,请输出"No"

输入样例 1 

5
1 2 3 4 5 
5 4 3 2 1

输出样例 1

Yes

输入样例 2 

5
1 2 3 4 5
2 1 5 3 4

输出样例 2

No
#includeusing namespace std;
int a[20] ;
int siz ;  // 鏍堢殑澶у皬
int top ;  // 鏍堥《

void push(int x) {
	if( 0 == siz ){
		siz ++ ;
		top = 0 ;
		a[0] = x ;
		return ;
	}
	top ++ ;
	a[top] = x ;
	siz ++ ;
}

int pop(){
	if( siz >0 ) {
		int x = a[top] ;
		top -- ;
		siz -- ;
		return x ;
	}	
	return -1 ;   // 琛ㄧず闈炴硶璋冪敤 
} 

void print() {
	for( int i = 0; i<= top ; i++) {
		cout<< a[i]<< " " ;
	}
	cout<< endl ;
}

int n ;
int in[20] ;    //  鍏ユ爤椤哄簭
int out[20];    //  鍑烘爤椤哄簭 

void init() {
	siz = 0 ; 
	for( int i = 0 ;i< n ; i++) {
		cin >>in[i] ;
	}	
	for( int i = 0 ;i< n ; i++) {
		cin >>out[i] ;
	}
}

//  1.鍒ゆ柇鑳藉惁鍑烘爤锛屽鏋滆兘锛屽垯鍑烘爤
//  2.鍚﹀垯锛屽垽鏂槸鍚﹀彲浠ュ叆鏍堬紝濡傛灉鑳斤紝鍒欏叆鏍?
//  3.闈炴硶鍑烘爤椤哄簭

void game() {
	int xin  = 0 ;  //  鍏ユ爤椤哄簭 
	int xout = 0 ;  //  鍑烘爤椤哄簭 
	while( true ) {
		int cnt = 0 ;
		if( siz >0 ) {  // 鍒ゆ柇鏄惁鍙互鍑烘爤 
			int x = pop() ;
			if( x == out[xout] ) {
				xout ++ ;    
                cnt ++ ;
			} else {
				push(x) ;
			}
		}
		if( 0 == cnt && xin< n ) {
			push( in[xin] ) ;
			xin ++ ;
			cnt ++ ;
		}
		if( 0 == cnt ) {
			cout<< "No"<< endl ;
			return ;
		}
		if( xin == n && xout == n ) {
			cout<< "Yes"<< endl ;
			return  ;
		}
	}
} 

int main() {
	//freopen("014.txt", "r", stdin) ;
	while( cin >>n ) {
		init() ;
		game() ;
	}
	return 0 ;
}

还有什么题需要我解答吗?

看在我这么努力写文章的份上,你愿意给我一个关注吗?

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章题目:出栈顺序(c++)-创新互联
路径分享:http://hbruida.cn/article/dhidii.html