zoukankan      html  css  js  c++  java
  • FZU 1064 教授的测试

    递归构造答案。

    根据当前整颗树的编号,可以计算左右子树有几个节点以及编号。因此,不断dfs下去就可以了。

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    
    long long c[20] = { 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786,
    208012, 742900, 2674440, 9694845, 35357670, 129644790 };
    long long n;
    
    void dfs(long long num, long long p)
    {
        long long left=0, right=0, sum = 0,left_p, right_p;
        int level = (int)num;
        for (int i = 0; i <= level-1; i++)
        {
            sum = sum + c[i] * c[level - 1 - i];
            if (sum >= p)
            {
                sum = sum - c[i] * c[level - 1 - i];
                p = p - sum;
                left = (long long)i;
                right = (long long)(level - 1 - i);
                if (c[level - 1 - i] == 1) left_p = p / c[level - 1 - i];
                else left_p = p / c[level - 1 - i] + 1;
                right_p = p% c[level - 1 - i]; 
                if (right_p == 0) right_p = c[level - 1 - i];
                break;
            }
        }
    
        if (left != 0){printf("(");dfs(left, left_p);printf(")");}
        printf("X");
        if (right != 0){printf("(");dfs(right, right_p);printf(")");}
    }
    
    void work()
    {
        long long p, left, right, sum = 0,left_p=0, right_p=0;
        int level;
        for (int i = 1; i <= 17; i++)
        {
            sum = sum + c[i];
            if (sum >= n){ sum = sum - c[i]; level = i; p = n - sum; break; }
        }
        dfs((long long)level, p);
        printf("
    ");
    }
    
    int main()
    {
        while (~scanf("%lld", &n))
        {
            if (!n) break;
            work();
        }
        return 0;
    }
  • 相关阅读:
    Flex 布局
    vue学习之用 Vue.js + Vue Router 创建单页应用的几个步骤
    vue学习起步:了解下
    vue学习一:新建或打开vue项目(vue-cli2)
    adb环境变量配置
    数据类型判断和数据类型转换代码工具
    日期工具集合
    postman变量的使用和设置
    浮点数运算和金额处理
    07- Linux常用命令
  • 原文地址:https://www.cnblogs.com/zufezzt/p/5289502.html
Copyright © 2011-2022 走看看