zoukankan      html  css  js  c++  java
  • 小球下落(二叉树)

    有一棵二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从上到下从左到右编号为1,2,3,...,2^D-1。在结点1处放一个小球,它会往下落。每个内结点上都有一个开关,初始全部关闭,当每次有小球落到一个开关上时,它的状态都会改变。当小球到达一个内结点时,如果该结点上的开关关闭,则往左走,否者往右走,直到走到叶子结点。
    一些小球从结点1处依次开始下落,最后一个小球将会落到哪里呢?输入叶子深度D和小球个数I,输出第I个小球最后所在的叶子编号。假设I不超过整棵树的叶子个数(即2^(D-1))。D<=20。输入最多包含1000组数据。
    样例输入:
    4 2
    3 4
    10 1
    2 2
    8 128
    16 12345
    样例输出:
    12
    7
    512
    3
    255

    36358



    #include <iostream>
    #include <string.h>
    using namespace std;
    int a[1000000];
    int main()
    {
        int n,k,i,j,m;
        while(cin>>n>>m)
        {memset(a,0,sizeof(a));
            for(i=0;i<m;i++)
            {k=1;
            for(j=0;j<n;j++)
            {a[k]=!a[k];
                k=a[k]?k*2:k*2+1;
            }
            }


            cout<<k/2<<endl;


        }
    return 0;
    }


  • 相关阅读:
    寒假学习进度九
    寒假学习进度八
    RestTemplate-记录
    Axure licensee key 8~9-转
    Mysql数据库引擎介绍--转载
    Mysql外键约束--转载
    IDEA快捷建使用
    MySQL在windows上多次安装失败
    五款优秀的端口扫描工具
    java 图片处理 base64编码和图片二进制编码相互转换-转载
  • 原文地址:https://www.cnblogs.com/lengxia/p/4387821.html
Copyright © 2011-2022 走看看