码迷,mamicode.com
首页 > 其他好文 > 详细

【HRBUST - 1371】 大模拟

时间:2019-11-16 17:22:25      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:pre   ble   name   namespace   pmp   题目   读取   node   简单的   

一个简单的模拟竟然看不懂,我太菜了。

题目:Leyni OS HRBUST - 1371
链接: http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1371
题意:

共有两种操作。一种 pwd 打印路径,第二种 cd + 路径,对已有的路径进行更改,(注意路径格式)

题解:

模拟大法,水题
注意格式

  • /x/y/z
  • /x/y/z/
  • x/y/z
  • x/y/z/
#include <cstdio>
#include <string>
#include <iostream>
using namespace std;
struct node{
    string s;
}s[2000];//4000有点大
void init(){//初始化
    for(int i=0;i<2000;i++){
        s[i].s="";
    }
}
int main(){
    int T;
    scanf("%d",&T);
    while(T--){
        int N,cnt=0;
        scanf("%d",&N);
        init();
        while(N--){
            string oper;
            cin>>oper;
            if(oper=="pwd"){
                for(int i=0;i<cnt;i++){
                    cout<<"/"<<s[i].s;
                }
                cout<<"/"<<endl;
            }
            else{
                string t;
                cin>>t;
                /* *
                 * 大坑:
                 * /x/x  需要对目录进行重新读取
                 * x/x/ 或者 /x/x/ 对目录进行重置
                 * */
                if(t[t.length()-1]=='/'){
                    init();cnt=0;
                    continue;
                }
                else t+="/";
                if(t[0]=='/'){
                    init();cnt=0;
                }
                else{
                    t='/'+t;
                }
                //把所有命令符都加载为/x/y/z/,进行模拟操作
                for(int i=0;i<t.length();i++){
                    if(t[i]=='.'&&t[i+1]=='.'){
                        cnt--;
                        if(cnt<0)cnt=0;
                        s[cnt].s="";
                        i+=2;
                    }
                    else{
                        if(t[i]=='/'){
                            if(i){
                                cnt++;
                                s[cnt].s="";
                            }
                            continue;
                        }
                        s[cnt].s+=t[i];
                    }
                }
            }
        }
    }
    return 0;
}

【HRBUST - 1371】 大模拟

标签:pre   ble   name   namespace   pmp   题目   读取   node   简单的   

原文地址:https://www.cnblogs.com/Vagrant-ac/p/11872176.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!