博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小球下落(Dropping Balls, Uva 679)
阅读量:5972 次
发布时间:2019-06-19

本文共 536 字,大约阅读时间需要 1 分钟。

题目描述

有一棵二叉树,最大深度为D,且所有的叶子深度都相同。所有结点从上到下从左到右编号为1,2,3,…,2eD-1。在结点1处放一个小球,它会往下落。每个结点上都有一个开关,初始全部关闭,当每次有小球落到一个开关上时,它的状态都会改变。当小球到达一个内结点时,如果该结点的开关关闭,则往上走,否则往下走,直到走到叶子结点,如下图所示。

1084440-20190306160828040-2072549103.png
一些小球从结点1处依次开始下落,最后一个小球将会落到哪里呢?输入叶子深度D和小球个数I,输出第I个小球最后所在的叶子编号。假设I不超过整棵树的叶子数;D<=20。输出最多包含1000组数据。

样例输入

4 2

3 4
10 1
2 2
8 128
16 12345

样例输出

12

7
512
3
255
36358

算法思路与实现

1 简单的模拟实现

while(scanf("%d %d",&D,&I)== 2){        int maxI=(1<

2 优化版本

while(scanf("%d %d",&D,&I)== 2){        int k = 1;        for(int i=0;i

转载于:https://www.cnblogs.com/MarkKobs-blog/p/10484043.html

你可能感兴趣的文章
Linux系统中的文本处理工具
查看>>
IDE---Python IDE之Eric5在window下的安装
查看>>
Mybatis调用Oracle中的存储过程和function
查看>>
基本安装lnmp环境
查看>>
yum源资料汇总
查看>>
7、MTC与MTV,http请求介绍
查看>>
logstash消费阿里云kafka消息
查看>>
第四节课作业
查看>>
EasyUI Calendar 日历
查看>>
unix 环境高级编程
查看>>
为数据库建立索引
查看>>
第二周作业-软件工作量的估计
查看>>
MAXIMO 快速查找实现
查看>>
Oracle——条件控制语句
查看>>
第一次作业-准备篇
查看>>
HDU1848 Fibonacci again and again
查看>>
HTML思维导图
查看>>
git改密码出现授权问题
查看>>
ORA-02266: 表中的唯一/主键被启用的外键引用
查看>>
day-6 and day-7:面向对象
查看>>