1. 程式人生 > >uva 514 火車

uva 514 火車

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 火車