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

其实没有那么复杂,题目中总共有三种情况:以"/"开头是指新建一个根目录,以前清空就行了,".."是返回上一层的文件夹,"单词开头"就是在停在的文件夹处建立这个单词所描述的文件夹,可以与父亲重名.与常识完全符合.这种操作方法是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. 已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭

    已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭 引用:   http://www.cnblogs.com/maxao/archive/2011/03/18/19881 ...

  2. Android系统手机端抓包方法(tcpdump)

    抓包准备 1. Android手机需要先获得root权限.一种是否获得root权限的检验方法:安装并打开终端模拟器(可通过安卓市场等渠道获得).在终端模拟器界面输入su并回车,若报错则说明未root, ...

  3. leetcode409

    Given a string which consists of lowercase or uppercase letters, find the length of the longest pali ...

  4. Cv图像处理

    http://wiki.opencv.org.cn/index.php/Cv%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86 看看知识点,虽然是C 版本.

  5. openwrt默认不开启wifi

    Openwrt默认不开启wifi,要开启的话, 修改这个文件: openwrt/trunk/package/kernel/mac80211/files/lib/wifi/mac80211.sh. 滚到 ...

  6. LeetCode OJ 257. Binary Tree Paths

    Given a binary tree, return all root-to-leaf paths. For example, given the following binary tree: 1 ...

  7. Jquery.Linq用法

    下载:http://linqjs.codeplex.com/ LINQ Pad Enumerable.Range(0, 20).Where("$ % 3 == 0").Select ...

  8. 个人linux简单笔记,随时更新

    vim显示行数 :set nu 查找文件 find /home -name config.txt 重命名文件或者文件夹 mv a b centos中phpize的安装 yum install php- ...

  9. HDU 2063 最大匹配的基础题

    中文题,题目大意不说了. 思路:就是寻找最大匹配,最大匹配就是每次找增广路,如果存在增广,那就把增广路上面的边全部都翻转即可.这样说明能多匹配一个,+1即可. //看看会不会爆int!数组会不会少了一 ...

  10. json的引号之伤

    最近读他们的jquery解读的源码,由于版本不同,我可能看的是他们解读的1.7的,但是我本身运行的可能是1.9的,所以有些出处,但是中心思想不变,我有疑问的时候,直接debug,让例子自己走一遍,好处 ...