1301 相对路径

描述

在经典的文件系统中,文件可以包含于文件夹中,文件夹也可包含于文件夹中。在类Unix操作系统中,没有盘符,只有一个根目录 / ,所有的其他文件或文件夹都是它的直接或间接子目录(子文件)。

文件可以表示如下:

///...//

如:/etc/apt/sources.list

文件夹可以表示如下:

///.../

如:/var/www

类Unix操作系统中的大部分使用者都频繁的使用shell(命令行交互界面),shell有一个当前目录,当用户需要跳转到别的目录时,可以使用cd命令。例如:如果当前目录是 /home/yuki,执行 cd ../../var/www之后,当前目录就变成了/var/www 。“..” 表示父目录, “../..” 则表示父目录的父目录。如果目标目录是当前目录的子目录,直接cd 目标目录。如,当前目录为 / , 执行cd var 可以直接进入 /var 目录。

类似的,现在就要你来解决一个简单的问题,求目标文件相对于当前文件的路径,类似于cd 命令后跟的参数,(求文件相对路径可以避免文件夹 .. 和 ../ 的二义性)当然,在实际使用中,你完全可以使 /var/www(绝对路径)直接定位文件,不过这里要求你用相对路径。

 

输入

输入数据有多组,第一行为n,表示有n组数据。随后每两行为一组,第一行为目标路径,第二行为当前路径。文件名总长度小于255,且仅包含小写a-z的字母。

 

输出

对于每组数据,输出一行,跳转的相对路径。

样例输入
4
/home/yuki/data/file
/home/user/pictures
/root/root/root
/root
/file
/
/a/b/a/b/a/b
/a/b/a/a/b/a/b
样例输出
../../yuki/data/file
root/root
file
../../../../b/a/b



这道题其实就是模拟, 把所有情况考虑清楚就可以了, 就是比较两个字符串, 先看从哪个地方开始出现不同, 然后去看当前文件夹的这个字符串这个地方之后有多少个'/', 就会需要相应多少'..'的操作, 然后注意各种细节处理... 就是可能会麻烦点, 不难



#include 
#include 

using namespace std;

int main()
{
    int t;
    cin>>t;
    string mu, dang;
    for(int i=0; i>mu;
        cin>>dang;
        string s="";
        int mu_len=mu.length();
        int dang_len=dang.length();
        int j=0;
        int p=0;
        if(dang=="/")
            cout<


你可能感兴趣的:(AC路漫漫)