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

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

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

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<stack>
  4. #include<cstring>
  5. using namespace std;
  6. stack<string>s1;///用于存储
  7. stack<string>s2;///用于输出
  8. int main()
  9. {
  10. int t;
  11. scanf("%d",&t);
  12. while(!s1.empty()) s1.pop();
  13. while(!s2.empty()) s2.pop();
  14. while(t--)
  15. {
  16. string op;
  17. cin>>op;
  18. if(op[] == 'p')
  19. {
  20. cout<<"/";
  21. while(!s1.empty())
  22. {
  23. s2.push(s1.top());
  24. s1.pop();
  25. }
  26. while(!s2.empty())
  27. {
  28. cout<<s2.top();
  29. s1.push(s2.top());///这个要加上去,因为我不会遍历栈的元素..
  30. s2.pop();
  31. }
  32. cout<<endl;
  33. }
  34. else
  35. {
  36. string a;
  37. cin>>a;
  38. int leno = a.length();
  39. a[leno++] = '/';
  40. a[leno] = '\0';
  41. string now;
  42. now = "";///取出每个单词,一种三种情况,对应题目的描述
  43. for(int i = ; i < leno; i++)
  44. {
  45. now += a[i];
  46. if(a[i] == '/')
  47. {
  48. if(now == "../")
  49. {
  50. if(!s1.empty()) s1.pop();///判断勿忘,返回一个文件夹
  51. }
  52. else if(now == "/")
  53. {
  54. while(!s1.empty()) s1.pop();///重新建立根目录,清空所有
  55. }
  56. else///在当前文件夹里新建文件夹
  57. {
  58. s1.push(now);
  59. }
  60. now = "";///清空勿忘
  61. }///文件夹是我这么说而已,为了便于理解,其实是目录的说....
  62. }
  63. }
  64. }
  65. return ;
  66. }

CodeForces 158C - Cd and pwd commands(模拟)的更多相关文章

  1. VK Cup 2012 Qualification Round 1 C. Cd and pwd commands 模拟

    C. Cd and pwd commands Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset ...

  2. codeforces C. Cd and pwd commands 执行命令行

    执行命令来改变路径 cd 并显示路径命令 pwd 一个节目的 抽样: input 7 pwd cd /home/vasya pwd cd .. pwd cd vasya/../petya pwd ou ...

  3. VK Cup 2012 Qualification Round 1---C. Cd and pwd commands

    Cd and pwd commands time limit per test 3 seconds memory limit per test 256 megabytes input standard ...

  4. 【Codeforces 158C】Cd and pwd commands

    [链接] 我是链接,点我呀:) [题意] 让你实现Shell的cd和pwd操作 [题解] 用一个list表示当前的路径 如果路径以/开头则表示需要清空当前路径重新走路 否则在原来路径的基础上继续加就可 ...

  5. [string]Codeforces158C Cd and pwd commands

    题目链接 题意很清楚 和linux的语句是一样的 pwd输出路径 cd进入 ..回上一层目录 此题完全是string的应用 String的用法 vector<string> s; int ...

  6. CodeForces - 158C(模拟)

    题意 https://vjudge.net/problem/CodeForces-158C 你需要实现类似 Unix / Linux 下的 cd 和 pwd 命令. 一开始,用户处于根目录 / 下. ...

  7. Linux之cd、pwd、mkdir、rmdir

    cd.pwd.mkdir.rmdir 命令功能: 切换到指定的目录,可用绝对路径和相对路径 命令格式: cd directory 命令参数: 无 命令实例: 1.切换到/bin目录 vbird@Ubu ...

  8. Codeforces Round #454 C. Shockers【模拟/hash】

    C. Shockers time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...

  9. Linux2:vi、ls、cd、pwd、mkdir、rm、mv、cp、cat、tail

    前言 从本篇文章开始,每篇文章将写10个Linux命令,个人的写作想法是: 1.常用的Linux命令,那些生僻的.不常用的就不写了 2.从实际考虑,只列出每个命令常见的用法和参数选项,有兴趣了解进一步 ...

随机推荐

  1. JavaScript高级程序设计:第十章

    一.理解包含不同层次节点的DOM 1.节点层次 以下面的HTML为例: <html> <head> <title>Sample Page</title> ...

  2. CSS3秘笈:第五章

    第五章  层叠管理样式 1.层叠是决定哪些样式属性要被应用到某一个元素的一套规则. 2.最近的祖先样式胜出:浏览器会采用离相关标签最近的样式. 3.直接应用的样式胜出:任何直接应用于指定标签的样式都战 ...

  3. json格式数据,将数据库中查询的结果转换为json, 然后调用接口的方式返回json(方式一)

    调用接口,无非也就是打开链接 读取流 将结果以流的形式输出 将查询结果以json返回,无非就是将查询到的结果转换成jsonObject ================================ ...

  4. HDU1073:Online Judge

    Problem Description Ignatius is building an Online Judge, now he has worked out all the problems exc ...

  5. android网络编程之HttpUrlConnection的讲解--DownLoadManager基本用法

    1.DownLoadManager是Android用系统服务(Service)的方式来优化处理长时间的下载操作的一个工具类.避免了我们去处理多线程,通知栏等等. 2.不要忘记添加权限 <uses ...

  6. Ansible8:Playbook循环【转】

    在使用ansible做自动化运维的时候,免不了的要重复执行某些操作,如:添加几个用户,创建几个MySQL用户并为之赋予权限,操作某个目录下所有文件等等.好在playbook支持循环语句,可以使得某些需 ...

  7. MySQL外键的作用和创建

    MySQL外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据.使两张表形成关联,外键只能引用外表中列的值! 我们来建两个表 CREATE TABLE `example1` ( ` ...

  8. mysql开启/关闭 update delete 安全模式

    在使用mysql执行update的时候,如果不是用主键当where语句,会报如下错误,使用主键用于where语句中正常. 异常内容:Error Code: 1175. You are using sa ...

  9. go mode

    https://github.com/dominikh/go-mode.el http://blog.altoros.com/golang-part-1-main-concepts-and-proje ...

  10. zf-删除重复数据只保留一条(转)

    http://blog.csdn.net/anya/article/details/6407280