栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 1150 S

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 1150 S

#include<stdio.h>#include<string.h>#include<math.h>#include<ctype.h>#define MAXN 300int operation(int i, int *tree, int len){//找到叶子节点的值并返回     if(2*i+2 >= len) return tree[i];    else    {        if(tree[i] == 0) return operation(2*i+1, tree, len);        else return operation(2*i+2, tree, len);    }}int main(){    int n, i, j, m, sum, temp, flag, t, times, k, cnt = 0;    int s_Tree[MAXN], order[10], read[10];    char ch;    while(scanf("%d", &n) != EOF && n)    {        getchar();        i = flag = 0;        memset(order, 0, sizeof(order));        while((ch = getchar()) != 'n')        {//处理输入,将xn中的数放到数组order中  if(isdigit(ch)) {     order[i] = order[i]*10 + (ch - '0');     flag = 1; } else if(flag == 1) {     i++;     flag = 0; }        }        memset(s_Tree, 0, sizeof(s_Tree));        sum = (int)pow(2.0, (double)n) - 1; //找到叶子节点的存储位置先         m = (int)pow(2.0, (double)n);//叶子节点的数量         for(i=0; i<m; ++i, ++sum)        {//存放叶子节点的值  ch = getchar(); s_Tree[sum] = ch - '0';        }        scanf("%d", &m);        getchar();        for(i=0; i<m; ++i)        {//存放xn的0/1值到数组read中  for(j=1; j<=n; ++j) {     ch = getchar();     read[j] = ch - '0'; } getchar(); for(k=t=0; t<n; ++t) {//设定各非叶子节点的值即0或者1      times = (int)pow(2.0, (double)t);     while(times--) s_Tree[k++] = read[order[t]]; } if(i == 0) printf("S-Tree #%d:n", ++cnt); printf("%d", operation(0, s_Tree, sum));        }        printf("nn");    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377551.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号