描述
给你一串路径,譬如:
a\b\c
a\d\e
b\cst
d
你把这些路径中蕴含的目录结构给画出来,子目录直接列在父目录下面,并比父目录的首字符向右缩两个空格,就像这样:
a
b
c
d
e
b
cst
d
注:同一级的需要按字母顺序排列,不能乱。
输入描述:
每个测试案例第一行为一个正整数n(n<=10)表示有n个路径,当n为0时,测试结束,接下来有n行,每行有一个字串表示一个路径,长度小于50。
输出描述:
输出目录结构,每一个测试样例的输出紧跟一个空行。

输入:
4
a\b\c
a\d\e
b\cst
d\
0
复制
输出:
a
  b
    c
  d
    e
b
  cst
d

这道题是在无力吐槽了,没找出错误在哪。一直提示格式错误。
已经解决的格式问题:

  1. 顺序(字母顺序)输出
  2. 父目录与子目录相对位置输出

#include<iostream>
#include<string.h>
#include<queue>
#include<vector>
#include<map>
using namespace std;
int main()
{
    int line;
    string str = "";
    while (cin >> line && line) {
        //顺序排列
        priority_queue<string,vector<string>,greater<string> > que;
        vector<string> vec{};
        for (int i = 0; i < line;++i) {
            cin >> str;
            que.push(str);   
        }
        //字符串读取与分离
        while (!que.empty()) {
            line--;
            str = que.top();
            que.pop();
            int pos = 0, len = str.size();
            int tp = 0, out_pos = 0,flag = 1;
            while (tp != -1) {
                tp = str.find('\\', pos);
                string temp_str = "";
                if (tp != str.npos)
                    temp_str = str.substr(pos, tp - pos);
                else
                    temp_str = str.substr(pos, str.size() - pos);
                if (temp_str == "")
                    break;
                pos = tp + 1;
                //已经存在该键值时
                if (flag == 1 && out_pos < vec.size() && vec[out_pos] == temp_str)
                    out_pos++;
                //不存在该键值时
                else {
                    flag = 0;
                    for (int i = 0; i <= out_pos - 1; ++i)
                        cout << "  ";
                    cout << temp_str << endl;
                    if (vec.size() == 0 || vec.size() <= out_pos)
                        vec.push_back(temp_str);
                    else
                        vec[out_pos] = temp_str;
                    out_pos++;
                }
            }
        }
    }
}

牛客结果:
在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐