zoukankan      html  css  js  c++  java
  • CodeForces 158C

      这个题我们又把题意理解错了,队友翻译了以后给我解释,我问这个直接一个单词开头的是要找到这个文件夹吗,他说是,然后我就呵呵了..奔着树形结构去和字符串维护就去了...做了好久都没模拟出来,感觉做出来的人也牛了..重名问题怎么解决的啊....但是!!!!

    其实没有那么复杂,题目中总共有三种情况:以"/"开头是指新建一个根目录,以前清空就行了,".."是返回上一层的文件夹,"单词开头"就是在停在的文件夹处建立这个单词所描述的文件夹,可以与父亲重名.与常识完全符合.这种操作方法是Linux操作系统里面的,题目让我们模拟过程输出路径,Linux学的人会对这个题很有感觉,而且这个题是CCF认证的一道题,真是应了那句话,题读懂了就简单,读不懂就难啊.

    下面是代码,我使用栈维护并输出.

    #include<iostream>
    #include<cstdio>
    #include<stack>
    #include<cstring>
    using namespace std;
    stack<string>s1;///用于存储
    stack<string>s2;///用于输出
    int main()
    {
        int t;
        scanf("%d",&t);
        while(!s1.empty()) s1.pop();
        while(!s2.empty()) s2.pop();
        while(t--)
        {
            string op;
            cin>>op;
            if(op[0] == 'p')
            {
                cout<<"/";
                while(!s1.empty())
                {
                    s2.push(s1.top());
                    s1.pop();
                }
                while(!s2.empty())
                {
                    cout<<s2.top();
                    s1.push(s2.top());///这个要加上去,因为我不会遍历栈的元素..
                    s2.pop();
                }
                cout<<endl;
            }
            else
            {
                string a;
                cin>>a;
                int leno = a.length();
                a[leno++] = '/';
                a[leno] = '';
                string now;
                now = "";///取出每个单词,一种三种情况,对应题目的描述
                for(int i = 0; i < leno; i++)
                {
                    now += a[i];
                    if(a[i] == '/')
                    {
                        if(now == "../")
                        {
                            if(!s1.empty()) s1.pop();///判断勿忘,返回一个文件夹
                        }
                        else if(now == "/")
                        {
                            while(!s1.empty()) s1.pop();///重新建立根目录,清空所有
                        }
                        else///在当前文件夹里新建文件夹
                        {
                            s1.push(now);
                        }
                        now = "";///清空勿忘
                    }///文件夹是我这么说而已,为了便于理解,其实是目录的说....
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    Jmeter_远程启动 I
    jmeter(九)逻辑控制器
    Mysql innodb 间隙锁 (转)
    MySQL- InnoDB锁机制
    Innodb间隙锁,细节讲解(转)
    性能测试:压测中TPS上不去的几种原因分析(就是思路要说清楚)
    Redis性能调优
    Redis基础
    VMThread占CPU高基本上是JVM在频繁GC导致,原因基本上是冰法下短时间内创建了大量对象堆积造成频繁GC。
    关于Hibernate二级缓存第三方插件EHCache缓存
  • 原文地址:https://www.cnblogs.com/jifahu/p/5471914.html
Copyright © 2011-2022 走看看