uva 712

来源:互联网 发布:朝鲜族足球知乎 编辑:程序博客网 时间:2024/06/05 02:23

题目大意:给出一个树的层数和一个数的叶子节点的值分别是什么,然后给出类似于哈夫曼树的编码 然后按照编码去输出叶子节点的值是多少。

思路:
把编码变成二进制之后,就是叶子就节点所对应的下标。。

#include <iostream>using namespace std;#include <string>#include <cmath>#include <cstring>#include <cstdio>#include <cstdlib>char rec[150][10];int i;int sum1[150];void solve() {    int j = 0;    int t = 0, k = 0, sum = 0, p = 0;    char c;    for (j = 0; j < i ; j++){        sum = 0;        k = 0;        for (t = strlen(rec[j])-1; t >= 0; t--){            int h = rec[j][t] - 48;            sum = sum + h * pow(2, k++);        }        sum1[p++] = sum;    }}int main() {    int n, m, flag = 0;    char s[30], leafs[150];    while (scanf("%d", &n) && n) {        getchar();        gets(s);        scanf("%s", leafs);        scanf("%d", &m);        i = 0;        flag++;        memset(rec, '\0', 150 * 10 * sizeof(char));        while (m--) {            scanf("%s", rec[i++]);        }        solve();        printf("S-Tree #%d:\n", flag);        for (int q = 0; q < i; q++)            printf("%c", leafs[sum1[q]]);        printf("\n\n");    }    return 0;}
0 0
原创粉丝点击