九度1090-路径打印-多叉树
来源:互联网 发布:windows黑体字体下载 编辑:程序博客网 时间:2024/05/17 23:20
这道题真的是巨坑!调了将近一个小时的格式才发现要按照前面父目录的字符串长度进行缩进
附上PE6发之后好不容易AC的代码:
#include<bits/stdc++.h>using namespace std;//多叉树 typedef struct Node{char s[60];Node *son;Node *next_sibling;}Node;Node node[30]; void DFS(Node *root, int depth){Node *p = root->son;while(p){for(int i = 1; i <= depth; i++){cout << " "; }int len = strlen(p->s);cout << p->s << endl;DFS(p, depth+1+len);//这里输出格式一定要注意!!p = p->next_sibling;}}int main(){int n;while(~scanf("%d", &n) && n){Node *rt = new Node();rt->son = NULL;rt->next_sibling = NULL;while(n--){char s[60];scanf("%s", s);int len = strlen(s);char tmp[60];memset(tmp, 0, sizeof(tmp));int flag = 0;Node *p = rt;for(int i = 0; i <= len-1; i++){if(s[i] != '\\'){tmp[flag++] = s[i];}if(s[i] == '\\' || i == len-1){if(p->son == NULL){Node *tt = new Node();strncpy(tt->s, tmp, flag);tt->son = NULL;tt->next_sibling = NULL;p->son = tt;p = tt;}else{Node *pre = p;p = p->son;while(p && strcmp(p->s, tmp) < 0){//printf("%s %s\n", p->s, tmp);pre = p;p = p->next_sibling;}if(p == NULL){Node *tt = new Node(); strncpy(tt->s, tmp, flag); tt->son = NULL; tt->next_sibling = NULL; pre->next_sibling = tt; p = tt; //printf("aa\n");}else if(strcmp(p->s, tmp) > 0){Node *tt = new Node(); strncpy(tt->s, tmp, flag); tt->son = NULL; tt->next_sibling = p; if(p == pre->son) pre->son = tt; else if(p == pre->next_sibling) pre->next_sibling = tt; p = tt;} //等于节点值的只需要找到这个节点 }memset(tmp, 0, sizeof(tmp));flag = 0;}//printf("i:%d s[i]:%c\n", i, s[i]);}}DFS(rt, 0);cout << endl;}return 0;}
阅读全文
0 0
- 九度1090-路径打印-多叉树
- 九度OJ--1090--路径打印
- 九度 oj 题目1090:路径打印
- 【九度】题目1090:路径打印 && 【LeetCode】Simplify Path
- 九度OJ 1090:路径打印 (树、DFS)
- 题目1090:路径打印
- 题目1090:路径打印
- 题目1090:路径打印
- 题目1090:路径打印
- 九度1186 打印日期
- 题目1391:顺时针打印矩阵-九度
- 九度题目1186:打印日期
- 九度 题目1391:顺时针打印矩阵
- 九度题目1186:打印日期
- 九度OJ 打印日期 (模拟)
- 九度题目1186:打印日期
- 九度OJ题目1186:打印日期
- 九度oj-1391-顺时针打印矩阵
- 算法作业:证明题(3)-- 8.10
- linux 下获得IP的几种方法
- Java读取txt
- C++程序员学Java系列之四:Java中的关键字和标识符
- Maven 文件错误Failure to transfer org.codehaus.plexus:plexus-io:pom:1.0,Failure to transfer org.codehaus
- 九度1090-路径打印-多叉树
- Cmake编译安装MySQL完整版
- 最大子段和
- ubuntu ssh git访问验证
- RecyclerView 的简单使用
- highcharts 饼图
- [LeetCode] Insert Delete GetRandom O(1)
- python 元组
- USACO 3.3.2