zoukankan      html  css  js  c++  java
  • uva 514 火车

    #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
    ");
            else printf("No
    ");
            memset(jxt, 0, sizeof(jxt));
            }
            printf("
    ");
        }
    }

    这个题吧。。。感觉a,b很重要。

    可以把b,看作是成题目所给的那些火车序列里实现的火车数目, 当为n时, 即表示成功。

    a可以看做成已过的火车,当其数目大于n时, 及失败。

    把握好这两点即可。

    可实现的火车无非两种情况一个,,一串的,  一个单个进的。。。

  • 相关阅读:
    GetArxPath
    动态链接库
    获取文件名称 消除前面的绝对地址路径
    arx 插入图片
    cstring to utf8
    map 用法
    异常处理
    面向对象 "一"
    configparser模块
    装饰器
  • 原文地址:https://www.cnblogs.com/jrjxt/p/10353891.html
Copyright © 2011-2022 走看看