uva10562 Undraw the Trees
2016-06-10 15:23
344 查看
题意:按照图给的树的形状用括号输出这棵树。
思路:按照树前序遍历递归打印,注意一些字符处理的细节,比如说fgets()代替gets()
思路:按照树前序遍历递归打印,注意一些字符处理的细节,比如说fgets()代替gets()
#include<bits/stdc++.h> using namespace std; const int maxn=250; int n; char str[maxn][maxn]; void dfs(int r,int c) { printf("%c(",str[r][c]); if(r+1<n&&str[r+1][c]=='|'){ int i=c; while(str[r+2][i-1]=='-'&&i-1>=0) i--; while(str[r+2][i]=='-'&&str[r+3][i+1]!='\0'){//这里有一个坑,每一行最后'\n'在'\0'前面。对于'\n'当然也是不用打印,所以我这里是str[r+3][i+1]!='\0' if(str[r+3][i]!=' ') dfs(r+3,i); i++; } } printf(")"); } void solve() { n=0; for(;;){ fgets(str ,maxn,stdin);//gets if(str [0]=='#') break; else n++; } printf("("); if(n){ for(int i=0;i<strlen(str[0]);i++){ if(str[0][i]!=' ') {dfs(0,i);break;} } } printf(")\n"); } int main() { int T; fgets(str[0],maxn,stdin);//这虐坑,我直接scannf()读取T,一直W,看了书上这种写法。以后注意就好。 sscanf(str[0], "%d",&T); while(T--) solve(); }
相关文章推荐
- Hdu 5155 Harry And Magic Box
- spring 集成shiro 之 自定义过滤器
- Android 关闭WebView之后 ,声音或者视频不停止
- <Hadoop>Spark On Hadoop集群安装
- 计算机组成.更好的利用处理器.从输入输出看中断
- 一款二维码签到app
- RAR文件的图标不能正常显示为压缩包的图标解决办法
- Calibration of Short Range 2D Laser Range Finder for 3D SLAM Usage
- 系统调用方式创建文件--文件属性
- latex使用marvosym 宏包来替换logo图标
- 编码表的概述和常见编码表
- 巧用PropertyInfo简化和改善代码
- Win7如何部署apache服务器(包括SSL设置)
- Servlet3.0中Servlet的使用
- 运维自动化工具Cobbler之――安装实践
- 网络编程
- Serializable和Pacerlable
- PHP中常用的字符串格式化函数总结
- Android 数据库升级解决方案
- C++之派生类的友元