uva 514 火車
阿新 • • 發佈:2019-02-06
spa nbsp flag ++ bsp 感覺 大於 while 實現
#include<cstdio> #include<stack> #include<cstring> using namespace std; int n, jxt[1100] = {0}; int main() { int ll = 0; while(scanf("%d", &n) != EOF && n) { while(scanf("%d", &jxt[1]) != EOF && jxt[1]) { for(int i = 2; i <= n; i++) scanf("%d", &jxt[i]); stack<int> s; int a = 1, b = 1; int flag = 1; while(b <= n) { if(a == jxt[b]) {a++; b++;}//正好符合一進一出時的情境。 else if(!s.empty() && s.top() == jxt[b]) {s.pop(); b++;}//一串的 else if(a <= n) s.push(a++);else {flag = 0; break;} } if(flag) printf("Yes\n"); else printf("No\n"); memset(jxt, 0, sizeof(jxt)); } printf("\n"); } }
這個題吧。。。感覺a,b很重要。
可以把b,看作是成題目所給的那些火車序列裏實現的火車數目, 當為n時, 即表示成功。
a可以看做成已過的火車,當其數目大於n時, 及失敗。
把握好這兩點即可。
可實現的火車無非兩種情況一個,,一串的, 一個單個進的。。。
uva 514 火車