【CCF 路径解析】
2016-12-05 16:25
288 查看
= =简直… 上来一发80分,然后一直想哪里错了,然后发现是考虑了名字中带.的路径,没考虑路径为..xxxx的情况…补上之后90分……= =!!然后想可能是之前用string,不支持空行的缘故,所以又改成了char,然后就可以了
注意当前路径也有可能是需要解析的,两端代码几乎一样……迷之微笑,不想优化
注意当前路径也有可能是需要解析的,两端代码几乎一样……迷之微笑,不想优化
#include <cstdio> #include <iostream> #include <cstring> using namespace std; #define maxn 1010 string que[maxn],tmp[maxn]; char s[maxn]; int main() { int n; cin>>n; getchar(); gets(s); int pre=0; int top=0; for(int i=0;s[i]!='\0';i++) { if(s[i]=='/'||s[i]==' ') continue; if(s[i]=='.') { if(s[i+1]=='.' && s[i+2]=='/') { top--,i++; if(top<0) top=0; continue; } else if(s[i+1]=='/') continue; } string tt =""; int j; for(j=i;s[j]&&s[j]!='/';j++) tt+=s[j]; que[top++]=tt; i=j; } while(n--) { gets(s); int p; for(int i=0;i<maxn;i++) tmp[i]=""; if(s[0]=='/') p=0; else { for(int i=0;i<top;i++) tmp[i]=que[i]; p=top; } if(strlen(s)) { for(int i=0;i<strlen(s);i++) { if(s[i]=='/'||s[i]==' ') continue; if(s[i]=='.') { if(s[i+1]=='.' && s[i+2]=='/') { p--,i++; if(p<0) p=0; continue; } else if(s[i+1]=='/') continue; } string tt =""; int j; for(j=i;s[j]&&s[j]!='/';j++) tt+=s[j]; tmp[p++]=tt; i=j; } if(p) for(int i=0;i<p;i++) cout<<"/"<<tmp[i]; else cout<<"/"; } else { for(int i=0;i<top;i++)cout<<"/"<<que[i]; } cout<<endl; } return 0; }
相关文章推荐
- ccf认证题-路径解析
- CCF 201604-3 路径解析
- CCF 201604-3 路径解析 题解
- CCF 201604 -3 路径解析
- CCF 201604-3 路径解析
- CCF从业资格认证 201604-3 路径解析
- CCF-CSP 路径解析 JAVA 201604-3
- ccf--20160403---路径解析
- ccf认证路径解析90分运行错误
- CCF 习题 201604-3 路径解析 (STL模拟)
- CCF——路径解析
- ccf之路径解析java版
- CCF CSP 编程题目和解答-----试题名称:路径解析 -------201604-3
- ccf真题-201604-3-.路径解析-题解
- CCF CSP 路径解析 JAVA 201604-3 100分
- CCF路径解析
- CCF 201604-3 路径解析
- CCF CSP 201604-3 路径解析
- 【CCFCSP】201604-3 路径解析
- CCF-201604-3 路径解析(模拟)