uva 10562
来源:互联网 发布:南京java工资一般多少 编辑:程序博客网 时间:2024/06/05 05:33
题目大意:
利用字母和|和-表示成的树,表示成()形式将树表示出来
#include <iostream>using namespace std;#include <cstring>#include <string>struct Node{ int flag; Node(int a = 0) :flag(a){}};char a[205][205];int i;bool isNode(char c){ if (c == ' ' || c == '|' || c == '#' || c == '-'|| c=='\n' || c=='\0') return false; return true;}void build(int t,int left,int right){ int j,q=0,l=0,r=0; Node * root = new Node(); for (j = 0; j <strlen(a[t]); j++) { if (j > right) return; if (isNode(a[t][j]) && (j>=left && j<= right)) { root->flag++; //计算有几个字母 printf("%c(", a[t][j]); } if (root->flag && a[t + 1][j] == '|') { for (q = j; q >= 0; q--) if (a[t + 2][q] != '-') { l = q + 1; break; } if (q == -1) l = 0; for (q = j; q < strlen(a[t+2]); q++) if (a[t + 2][q] != '-') { r = q-1; break; } if (q == strlen(a[t + 2])) r = strlen(a[t + 2]); build(t + 3, l, r); root->flag = 0; } if (isNode(a[t][j]) && (j >= left && j <= right)) printf(")");// if (t >= i && j == strlen(a[t]))// break; }}int main(){ int T; Node * root = new Node(); scanf("%d", &T); getchar(); while (T--) { memset(a, '\0', 205*205*sizeof(char)); for (i = 0;gets(a[i]); i++) { if (strcmp(a[i],"#") == 0) break; } if (--i == 1) printf("()\n"); else { printf("("); build(0,0,strlen(a[0])-1); printf(")\n"); } } return 0;}
0 0
- uva 10562
- uva 10562
- uva 10562
- uva 10562
- uva 10562
- uva 10562
- UVA 10562
- UVA 10562 看图写树
- uva 10562(dfs)
- UVa 10562 看图写树
- 看图写树Uva-10562
- UVa 10562 看图写树
- uva 10562 DFS
- UVA-10562看图写树
- 10562UVa看图写树 RE
- uva
- UVA
- UVA
- font-awesome图标用法
- 第九章信息安全导论
- 做ios开发久了 总觉得 该留下点什么
- Maven在Myeclipse上配置
- libSVM应用举例
- uva 10562
- VS2010每次编译都重新编译整个工程的解决方案
- Android studio 学习笔记 ----快捷键大全
- 层次遍历
- 项目整体回顾
- HCE基础知识
- 网站开发进阶(十三)window.onload用法详解
- [黑马IOS自学第一篇]IOS界面编程,IOS开发体验,控件初步认识
- 【STL学习】容器篇-适配器容器