小球下落

【题目大意】

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

【分析】

先将每个结点用数组保存标记,几个小球下落,就执行几次循环,每次执行,凡是到了哪个结点处就使      标记数组变化,使其下次可以指到不同的方向。

【代码实现】

代码  1:

#include

#include

const int maxd=20;

int s[1<

int main()

{

int D,I;

while(~scanf("%d %d",&D,&I)) // 输入叶子所在的深度D,和有多少个小球下落

{

memset(s,0,sizeof(s));

int k,n=(1<

for(int i=0;i

{

k=1; // 从堆顶开始

for( ; ; )

{

s[k]=!s[k]; // 经过后改变活塞方向

k=s[k]? k*2:k*2+1; // 判断往哪方向走

if(k>n) // 越界跳出

break;

}

}

printf("%d\n",k/2);

}

return 0;

}

这个代码简单但数据太大就会超时,很适合了解小球下落的过程

代码  2:

#include

#include

int main()

{

int D,I;

while(~scanf("%d %d",&D,&I))

{

int k=1;

for(int i=0;i

if(I%2) // I个小球到每一层时,只考虑第I个就行了,如果它为奇数它就往左走,如果它为偶数他就往右走

{

k=k*2;

I=(I+1)/2;

}

else

{

k=k*2+1;

I/=2;

}

printf("%d\n",k);

}

return 0;

}

/*

输入:

4 2

3 4

10 1

2 2

8 128

16 12345

输出:

12

7

512

3

255

36358

*/

二叉树小球下落问题c语言,二叉树:小球下落相关推荐

  1. c语言二叉树链式存储,C语言 二叉树的链式存储实例

    二叉树的链式存储 实现二叉树的基本操作:建立.遍历.计算深度.结点数.叶子数等. 输入C,先序创建二叉树,#表示空节点: 输入H:计算二叉树的高度: 输入L:计算二叉树的叶子个数: 输入N:计算二叉树 ...

  2. 二叉树小球下落问题c语言,#C++初学记录(树和二叉树)

    二叉树的编号 例题 6-6 小球下落问题 有一棵二叉树,最大深度为D,且所有叶子深度都相同.所有节点从上到下,从左到右编号为1,2,3,4,....,2^D-1.在节点1处放置小球,他会往下落.每个节 ...

  3. C语言二叉树曲折级顺序遍历(附完整源码)

    C语言二叉树曲折级顺序遍历 曲折级顺序遍历 C语言二叉树曲折级顺序遍历完整源码(定义,实现,main函数测试) 曲折级顺序遍历 Given a binary Tree 1/ \2 3/ \ / \4 ...

  4. C语言二叉树前序遍历(附完整源码)

    C语言二叉树前序遍历 C语言二叉树前序遍历完整源码(定义,实现,main函数测试) C语言二叉树前序遍历完整源码(定义,实现,main函数测试) #include <iostream>st ...

  5. C语言二叉树的逆向有序遍历(附完整源码)

    C语言二叉树的逆向有序遍历 C语言二叉树的逆向有序遍历完整源码(定义,实现,main函数测试) C语言二叉树的逆向有序遍历完整源码(定义,实现,main函数测试) #include <iostr ...

  6. C语言二叉树一个节点的所有祖先节点(附完整源码)

    C语言二叉树一个节点的所有祖先节点 一个节点的所有祖先节点 C语言二叉树一个节点的所有祖先节点完整源码(定义,实现,main函数测试) 一个节点的所有祖先节点 Given a binary Tree: ...

  7. C语言二叉树的lowest common ancestor最低公共祖先(附完整源码)

    C语言二叉树的lowest common ancestor最低公共祖先 C语言二叉树的lowest common ancestor最低公共祖先完整源码(定义,实现,main函数测试) C语言二叉树的l ...

  8. C语言二叉树总和等于k的所有路径的算法(附完整源码)

    C语言二叉树总和等于k的所有路径的算法 C语言二叉树总和等于k的所有路径的算法完整源码(定义,实现,main函数测试) C语言二叉树总和等于k的所有路径的算法完整源码(定义,实现,main函数测试) ...

  9. c语言二叉树的头文件叫什么,西安交大朱站立数据结构——使用C语言》头文件系列——二叉树.doc...

    西安交大朱站立数据结构--使用C语言>头文件系列--二叉树 本文为二叉链存储结构的二叉树操作实现,实现了二叉树的定义.插入数据.删除数据.撤销以及二叉树的打印.前序遍历.中序遍历.后序遍历等.本 ...

最新文章

  1. 基于python的螺纹钢28分钟策略
  2. 浅谈script标签中的async和defer
  3. 神经元模型及网络结构
  4. Elasticsearch-02CentOS7安装elasticsearch-head插件
  5. workman php教程_workerman搭建websocket入门教程,简单实用
  6. 蓝桥杯2018初赛-哪天返回-模拟
  7. arm-linux-gcc静态编译和动态编译的区别
  8. 布谷鸟沙盒分析静态文件_“案例沙盒方法”喜提国际商学院协会(AACSB)2019年启发式创新奖...
  9. CentOS7 搭建Pulsar 消息队列环境,CentOS(Linux)部署Pulsar,亲测成功,以及Python操作Pulsar实例驱动
  10. 11 | 互联网产品的测试策略应该如何设计?
  11. Android(IPC)进程间通讯1:详解Binder由来?
  12. mysql 1054 42s22_MySQL 触发器的坑:ERROR 1054 (42S22): Unknown column 'xxx' in 'field list'
  13. 推理机Jess、Racer、Jena 比较 (转)
  14. 斐讯k2华硕虚拟服务器,斐讯K2路由器三步刷入华硕固件
  15. 70周年国庆,34个省级行政区前来祝贺
  16. 《自动控制原理》个人笔记(来自ppt课件)
  17. EditPlus 使用 json 格式化
  18. C语言printf输出十六进制16进制
  19. 计算机图形学【GAMES-101】7、光线追踪原理(线面求交、预处理光追加速)
  20. 丝网印刷的作用原理及异常分析

热门文章

  1. Mac技巧50条,早晚都会用到(上)
  2. otis电梯服务器tt使用说明_OTIS TT电梯操作器操作指南
  3. 大便、小便与放屁 --引用
  4. 单链表销毁的两种方式
  5. 应届生半年c++培训计划
  6. 学Python可少不了项目练手,这8个小项目有趣又实用,小白也能做出来
  7. 中基鸿业你应该知道的七个理财小知识
  8. 中基鸿业在投资互联网理财时需要注意哪些
  9. Java Exchange企业邮件服务器 发Email
  10. VScode 最强出装