UVA712
来源:互联网 发布:旭辉研彩软件在哪下载 编辑:程序博客网 时间:2024/05/23 15:38
题目的意思是给一棵完全二叉树,从根节点开始,碰到0往左,碰到1往右。
深度不大于8.第一行输入是深度。
除了叶子节点,其他处在每一水平线上的节点值都是一样的,并且用x1 ,x2,x3,x4......等来代替,第二行的输入就给出顺序。。
然后第三行的输入是从根节点到叶子节点的次数。
接下去是每一次x1,x2,x3,x4....的值是多少。(虽然每一层是x1,x2等等中的哪一个不是顺序的,但输入是顺序的,x1,x2,x3,所以要把值对上去。)。。因为每一次这些值不同,所以最终落到的位置也不同,就是要求这么多次,每一次所到的节点组成的串,输出。
这题我并没有建树,而是做了一个二进制计算,假如深度为3.。那000就是第一个 001就是第二个。刚好对上了01二进制所表示的数的大小。。
AC代码:
#include<iostream>#include<string>#include<stdio.h>#include<cmath>using namespace std;int main () {int t;int count;int flag[8];char dep[8];char leaf[256];char ans[256];int res = 0;int cas = 0;while (scanf("%d",&t) && t) {getchar();for (int i = 0; i < t ;i++) {getchar();scanf("%d",&flag[i]);getchar();}for (int i = 0 ; i < pow(2,t) ;i++) {scanf("%c",&leaf[i]);}scanf("%d",&count);getchar();for (int i = 0; i < count ;i++) {for (int j = 0; j < t ;j++) {scanf ("%c",&dep[j]);}getchar();for (int k = t - 1,l = 0 ; k >= 0;k--,l++ ) {res += (dep[flag[l] - 1] - 48) * pow (2,k);}ans[i] = leaf[res]; ans[i + 1] = '\0';res = 0;}printf("S-Tree #%d:\n%s\n\n",++cas,ans);}return 0;}
0 0
- uva712
- UVA712
- uva712
- UVA712 S-Trees
- UVA712-S-Trees
- S-Trees UVA712
- uva712 - S-Trees
- UVa712 - S-Trees
- uva712 - S-Trees
- UVA712 - S-Trees
- UVA712 (好好读题)
- uva712- S-Trees
- uva712 -- S-Trees
- uva712解题报告
- UVA712 S-Tree总结
- Uva712——S-Trees
- uva712 S-Tree (假二叉树重建)
- 习题6-2 S树 UVa712
- 关于学习数据结构的日志
- Rman中expired和obsolete的区别
- 来的快乐的健康
- 具体类、虚类、抽象类(纯虚类)、接口
- httpparase + httpclient 的运用
- UVA712
- 撒旦
- Cython 101
- 全国地址的级联下拉
- 来的快乐的健康的快乐的健康复古款式的
- linux禁ping(Disable ping response)
- Python numpy数组扩展效率问题
- 来的快乐的健康的快乐的健康复古款式的
- mysql 数据库乱码问题