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

zoj 2738 The Kth BST

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

zoj 2738 The Kth BST

#include<stdio.h>#include<stdlib.h>#include<string.h>int tree[20];int left[24];int right[24];void init(){int i,sum,j;tree[0] = 1;for(i = 1; i< 20;i++){sum = 0;for(j=0;j<=i-1;j++){sum += tree[j] * tree[i-1-j];}tree[i] = sum;}}int fun(int * p,int n, int m, int start, int incr){    int i,sum = 0,t,root;        for(i=0;i<=n-1;i++){t = tree[i] * tree[n-i-1] * incr;if(m <= t){break;}m -= t;sum += t;}*p = start + i;if(i){t = fun(&root, i,m, start, incr * tree[n-i-1]);m -= t;sum += t;left[start +i ] = root;} else {left[start + i]  = -1;}right[start + i] = -1;start += i + 1;i = n - 1 - i;    if(i > 0){t = fun(&root,i,m,start,incr);m -= t;sum += t;right[start -1] = root;}return sum;}void preorder(int r){if(r == -1)return;printf("%c", r+'a');preorder(left[r]);preorder(right[r]);}void midorder(int r){if(r == -1)return;midorder(left[r]);printf("%c %c %cn", r+'a', left[r]==-1?'*':left[r] +'a', right[r]==-1?'*':right[r]+'a');midorder(right[r]);}int main(){    init();    int n,m;    int tstcase = 0;        int root;        scanf("%d %d", &n, &m);    while(!feof(stdin)){if(tstcase)printf("n");tstcase ++;memset(left, -1 ,sizeof(int)*n);memset(right, -1 ,sizeof(int)*n);    fun(&root,n,m,0,1);    preorder(root);    printf("n");    midorder(root);    scanf("%d %d", &n, &m);}    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/381067.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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