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

其实没有那么复杂,题目中总共有三种情况:以"/"开头是指新建一个根目录,以前清空就行了,".."是返回上一层的文件夹,"单词开头"就是在停在的文件夹处建立这个单词所描述的文件夹,可以与父亲重名.与常识完全符合.这种操作方法是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[] == '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] = '\0';
string now;
now = "";///取出每个单词,一种三种情况,对应题目的描述
for(int i = ; 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 ;
}

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. selenium高级用法

    http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp# WebDriver: Advanced Usage Explicit and Im ...

  2. hdu_2110_Crisis of HDU(母函数)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2110 题意:给你N个价值和数目,求方案数,很裸的母函数. #include<cstdio> ...

  3. Storm官方文档翻译之在生产环境集群中运行Topology

    在进群生产环境下运行Topology和在本地模式下运行非常相似.下面是步骤: 1.定义Topology(如果使用Java开发语言,则使用TopologyBuilder来创建) 2.使用StormSub ...

  4. c# 快速验证代理IP是否有用

    public void yanzhen(string str, int port) { WebProxy proxyObject = new WebProxy(str, port);//str为IP地 ...

  5. MySQL 的实时性能监控利器【转】

    操作系统及MySQL数据库的实时性能状态数据尤为重要,特别是在有性能抖动的时候,这些实时的性能数据可以快速帮助你定位系统或MySQL数据库的性能瓶颈,就像你在Linux系统上使用「top,sar,io ...

  6. MySQL 视图 总结

    什么是视图 视图是从一个或多个表中导出来的表,是一种虚拟存在的表. 视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据. 这样,用户可以不用看到整个数据库中的数据,而之关心对自己有用的数据. 数 ...

  7. Linux查询系统配置常用命令

    系统 # uname -a               # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue   # 查看操作系统版本# cat /proc/cpuinfo  ...

  8. Mysql找回root密码

    1.停止数据库服务 service mysql stop 2.修改my.cnf 添加skip-grant-tables 3.重启数据库 service mysql restart 4.修改root密码 ...

  9. inno setup 1

      1.简单脚本 [setup] AppName=Test AppVerName=Test DefaultDirName="d:\setup\app" AppVersion=1.0 ...

  10. PE文件格式详解(上)

    作者:MSDN 译者:李马 摘要 Windows NT 3.1引入了一种名为PE文件格式的新可执行文件格式.PE文件格式的规范包含在了MSDN的CD中(Specs and Strategy, Spec ...