路径打印(建树,DFS)

2024-02-20 22:32
文章标签 路径 dfs 打印 建树

本文主要是介绍路径打印(建树,DFS),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述

给你一串路径,譬如: 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。

输出描述:

输出目录结构,每一个测试样例的输出紧跟一个空行。
示例1

输入

4
a\b\c
a\d\e
b\cst
d\
0

输出

abcde
bcst
d


#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define N 10
#define LEN 50typedef struct node {char name[LEN];int num;struct node *children[N];
} Node;void create(Node *root, char s[LEN])
{   if (s[0] == '\0')return;int i, j;char name[LEN];i = 0;while (s[i] != '\\' && s[i] != '\0')//找一个节点{name[i] = s[i];i++;}   name[i] = '\0';if (s[i] == '\\')i++; for (j=0; j<root->num; j++){if (strcmp(root->children[j]->name, name) == 0)//找到匹配的根节点break;}   if (j < root->num)//此节点已经存在root = root->children[j];else//创建新的节点{Node *n1 = (Node *)malloc(sizeof(Node));strcpy(n1->name, name);n1->num = 0;root->children[root->num++] = n1;root = n1;}create(root, s+i);
}int cmp(const void *a, const void *b)
{Node **x = (Node **)a;Node **y = (Node **)b;return strcmp((*x)->name, (*y)->name);
}void DFS(Node *root, int addLen)
{int i;if (addLen >= 0){for (i=0; i<addLen; i++)printf(" ");printf("%s\n", root->name);}qsort(root->children, root->num, sizeof(Node *), cmp);for (i=0; i<root->num; i++)DFS(root->children[i], addLen + strlen(root->name) + 1);
}int main(void)
{int n;int i;char s[LEN];Node root; while (scanf("%d", &n) != EOF && n){root.name[0] = '\0';root.num = 0;for (i=0; i<n; i++){scanf("%s", s);create(&root, s);} DFS(&root, -1);printf("\n");}
}   

这篇关于路径打印(建树,DFS)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/729730

相关文章

Linux修改pip和conda缓存路径的几种方法

《Linux修改pip和conda缓存路径的几种方法》在Python生态中,pip和conda是两种常见的软件包管理工具,它们在安装、更新和卸载软件包时都会使用缓存来提高效率,适当地修改它们的缓存路径... 目录一、pip 和 conda 的缓存机制1. pip 的缓存机制默认缓存路径2. conda 的缓

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

MySQL9.0默认路径安装下重置root密码

《MySQL9.0默认路径安装下重置root密码》本文主要介绍了MySQL9.0默认路径安装下重置root密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录问题描述环境描述解决方法正常模式下修改密码报错原因问题描述mysqlChina编程采用默认安装路径,

windos server2022里的DFS配置的实现

《windosserver2022里的DFS配置的实现》DFS是WindowsServer操作系统提供的一种功能,用于在多台服务器上集中管理共享文件夹和文件的分布式存储解决方案,本文就来介绍一下wi... 目录什么是DFS?优势:应用场景:DFS配置步骤什么是DFS?DFS指的是分布式文件系统(Distr

python获取当前文件和目录路径的方法详解

《python获取当前文件和目录路径的方法详解》:本文主要介绍Python中获取当前文件路径和目录的方法,包括使用__file__关键字、os.path.abspath、os.path.realp... 目录1、获取当前文件路径2、获取当前文件所在目录3、os.path.abspath和os.path.re

hdu2544(单源最短路径)

模板题: //题意:求1到n的最短路径,模板题#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#i

poj 1734 (floyd求最小环并打印路径)

题意: 求图中的一个最小环,并打印路径。 解析: ans 保存最小环长度。 一直wa,最后终于找到原因,inf开太大爆掉了。。。 虽然0x3f3f3f3f用memset好用,但是还是有局限性。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#incl

hdu 2489 (dfs枚举 + prim)

题意: 对于一棵顶点和边都有权值的树,使用下面的等式来计算Ratio 给定一个n 个顶点的完全图及它所有顶点和边的权值,找到一个该图含有m 个顶点的子图,并且让这个子图的Ratio 值在所有m 个顶点的树中最小。 解析: 因为数据量不大,先用dfs枚举搭配出m个子节点,算出点和,然后套个prim算出边和,每次比较大小即可。 dfs没有写好,A的老泪纵横。 错在把index在d