zoj 1259 || poj 1363 Rails(栈~!)

类似hdu1022,比1022还简单 = =。。。

 

题意没耐心读下去,以至于理解错误 = =。。。

 

从A的火车顺序是1、2、3。。。N。 到达B的序列是输入的序列。

 

栈的应用。

 

#include <stdio.h> #include <stdlib.h> #include <iostream> #include <string.h> #include <stack> using namespace std; stack<int> S; int main(void) { int n; int a[1005]; int num[1005]; for(int i=0; i<=1000; i++) num[i] = i; while( cin >> n && n ) { while( cin >> a[1] && a[1] ) { for(int i=2; i<=n; i++) cin >> a[i]; int i = 2,k = 1; S.push(num[1]); while( k <= n && i<=n+1 ) // if stop by i == n, you will wrong .Think the reverse order. { if( S.empty() || S.top() != a[k] ) { S.push( num[i] ); i++; } else if( S.top() == a[k] ) { S.pop(); k++; } else break; } if( S.empty() ) printf("Yes/n"); else printf("No/n"); while( !S.empty() ) // Clear the stack for next text. S.pop(); } cout << endl; } return 0; }  

你可能感兴趣的:(zoj 1259 || poj 1363 Rails(栈~!))