CCF认证 2016-04 路径解析
2018-02-20 09:37
253 查看
可以用string数组来保存各级目录名,开一个保存当前路径,另一个用来保存输出具体看代码和注释
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; const int N=1000+10; string s ,c ; int s0,c0; int main() { string a,b; int p; cin>>p; s0=c0=0; b=""; cin>>a; int len=a.length(); for(int i=1;i<len;i++) //处理当前目录,保存在s中 { if(a[i]=='/') { s[s0++]=b; b=""; } else b+=a[i]; } if(b.length()!=0) s[s0++]=b; //末尾要像读到'/'一样处理 getchar(); //读入换行符 while(p--) { getline(cin,a); //可能出现空串,所以要按行读取 b=""; int len=a.length(); //如果a是空串,算作当前路径 if(a[0]!='/'||a.length()==0) //如果是相对路径,把当前路径复制到c中 { for(int i=0;i<s0;i++) c[i]=s[i]; c0=s0; } else c0=0; //否则从根目录开始 for(int i=0;i<len;i++) //处理路径 { if(a[i]=='/') //读到'/'才分情况处理 { if(b.length()==0) continue; if(b=="."); else if(b=="..") c0==0?:c0--; else c[c0++]=b; b=""; } else b+=a[i]; } if(b.length()!=0) //末尾要像读到'/'一样处理 { if(b=="."); else if(b=="..") c0==0?:c0--; else c[c0++]=b; b=""; } for(int i=0;i<c0;i++) cout<<'/'<<c[i]; if(c0==0) cout<<'/'; //根目录 cout<<endl; } return 0; }
相关文章推荐
- CCF认证 201604-3 路径解析
- CCF认证 2016-04 俄罗斯方块
- CCF CSP 路径解析(2016-4)
- CCF认证 2016-04 折点计数
- 域服务篇 04. 组 ❀ Windows Server 2016
- Tomcat下获得路径全解析
- Windows Server 2016 安装 IIS 服务时提示指定备用源路径 3ff8
- CCF认证 2016-12 权限查询
- UCHome下伪静态的实现及路径解析
- python学习 二 04 爬一个图片网站-解析文件,获得所有图片链接
- 项目路径解析
- Bash Shell 解析路径获取文件名和目录名
- CCF从业资格认证 201604-3 路径解析
- Office 2016安装路径修改方法
- 使用import简化spring的配置 spring import 标签的解析 使用import或加载spring配置时,报错误There is no ID/IDREF 多个Spring配置文件import resource路径配置
- 白话陈述之——从python脚本变化解析由路径引起的GP服务运行失败问题
- RxJava源码解析04-变换过程(flatmap)
- 命令调用C#程序, 路径参数解析错误
- Hibernate的packagesToScan路径解析分析