生活的烦恼
2015-05-14 12:08
260 查看
生活的烦恼
时间限制:1000 ms | 内存限制:65535 KB
难度:2
描述
生活的暑假刚集训开始,他要决心学好字典树,二叉树,线段树和各种树,但生活在OJ上刷题的时候就遇到了一个特别烦恼的问题。那当然就是他最喜欢的二二叉树咯!题目是这样的:给你一颗非空的二叉树,然后再给你一个整数n,让生活输出这颗二叉树的第n(n>0且n<=树的深度)层,出题者为了给生活降低难度,要求两个输出数据之间用’~’隔开。看来我们的出题人很有爱啊!
输入
第一行输入一个数N,表示有N组测试数据。接下来N行,每行一个字符串,用’#’表示为空的节点,树的结束标志为’@’。’@’后仅有一个空格,空格后为一个数字,表示生活要输出的二叉树的第几层!
输出
每行输出一个字符串,表示给出二叉树的第n层!
样例输入
2
1 2 # # 3 # # @ 1
5 7 3 # # # 4 # # @ 3
样例输出
1
3
提示
5 第一层
/ \
7 4 第二层
/
3 第三层
如果对题意还有不理解或其他问题,请到讨论区提问或邮件我
标程:
时间限制:1000 ms | 内存限制:65535 KB
难度:2
描述
生活的暑假刚集训开始,他要决心学好字典树,二叉树,线段树和各种树,但生活在OJ上刷题的时候就遇到了一个特别烦恼的问题。那当然就是他最喜欢的二二叉树咯!题目是这样的:给你一颗非空的二叉树,然后再给你一个整数n,让生活输出这颗二叉树的第n(n>0且n<=树的深度)层,出题者为了给生活降低难度,要求两个输出数据之间用’~’隔开。看来我们的出题人很有爱啊!
输入
第一行输入一个数N,表示有N组测试数据。接下来N行,每行一个字符串,用’#’表示为空的节点,树的结束标志为’@’。’@’后仅有一个空格,空格后为一个数字,表示生活要输出的二叉树的第几层!
输出
每行输出一个字符串,表示给出二叉树的第n层!
样例输入
2
1 2 # # 3 # # @ 1
5 7 3 # # # 4 # # @ 3
样例输出
1
3
提示
5 第一层
/ \
7 4 第二层
/
3 第三层
如果对题意还有不理解或其他问题,请到讨论区提问或邮件我
#include<iostream> #include <cstdio> using namespace std; char t[2]; int n,top=1; char str[10010000]; struct S { char a; S* l; S* r; }*p; void cstruct(S*& k) { scanf("%s",&t); if(t[0]=='@')return; if(t[0]=='#') { k=NULL; } else { k=new S; if(!k)return; k->a=t[0]; cstruct(k->l); cstruct(k->r); } } void show(int f,S* k) { if(k==NULL)return; if(f==n) { if(top==1) { printf("%c",k->a); top++; } else { printf("~%c",k->a); } return; } show(f+1,k->l); show(f+1,k->r); } //void root(S* p) //{ // if(p) // { // printf("%c ",p->a); // root(p->l); // root(p->r); // } // return; //} int main() { char t[10]; int N; scanf("%d",&N); while(N--) { p=NULL;top=1; cstruct(p); scanf("%s",&t);//这里有可能还有字符串会影响后面n的输入 scanf("%d",&n); show(1,p); printf("\n"); /* root(p); printf("\n");*/ } return 0; }
标程:
#include <stdio.h> #include <string.h> #define Max 16 char str[Max]; int t,num,temp[Max],sum[Max]; char map[Max][Max][Max]; int main(){ //freopen("in.txt","r",stdin); scanf("%d",&t); while(t--){ memset(temp,0,sizeof(temp)); memset(sum,0,sizeof(sum)); int count=0; while(scanf("%s",str)&&str[0]!='@'){ count++; temp[count-1]++; if(str[0]=='#'){ count--; while((temp[count]&1)==0) count--; } else strcpy(map[count][sum[count]++],str); } scanf("%d",&num); for(int i=0;i<sum[num];i++){ printf("%s",map[num][i]); printf("%s",i!=sum[num]-1?"~":"\n"); } } return 0; }
相关文章推荐
- 想睡觉却睡不着,失眠烦恼10招解决 - 健康程序员,至尚生活!
- NYOJ1063 生活的烦恼(二叉树的建立)
- [禅悟人生]生活中的烦恼, 一笑了之
- 六招让你远离失眠烦恼 - 生活至上,美容至尚!
- 生活随笔:烦恼
- 六招让你远离失眠烦恼 - 健康程序员,至尚生活!
- 生活随笔:烦恼
- 1603 生活的烦恼
- 生活的烦恼
- NYOJ1063_生活的烦恼
- 生活的烦恼
- 九种食物摆脱便秘烦恼 - 生活至上,美容至尚!
- 全天防晒大充电,让你夏日无烦恼 - 生活至上,美容至尚!
- 阿姜查 | 当一个人不了解死亡时,生活会非常烦恼
- 适当地做些改变。让自己的生活不再烦恼,不再为了自己的未来而担心。
- 生活的烦恼
- 我们在不同的生活里,有着不同的烦恼,你读不懂我的愁,我体会不了你的苦。
- 九种食物摆脱便秘烦恼 - 健康程序员,至尚生活!
- 生活中的烦恼
- 几多烦恼几多愁 — 日本华人生活纪实