出栈顺序(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#include
using 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://azwzsj.com/article/dhidii.html