二叉树 小球下落问题
2015-08-17 22:49
288 查看
#include <stdio.h> #include <string.h> #define MAXD 20 int state[1<<MAXD]; int main() { int D, I; while(scanf("%d%d", &D, &I) == 2) { int i, k, n = (1<<D)-1; memset(state, 0, sizeof(state)); for(i = 0; i < I; i++) { for(k = 1;;) { state[k] = !state[k]; k = state[k] ? (2*k) : (2*k+1); if(k > n) break; } } printf("%d\n", k/2); } return 0; }
#include <stdio.h> int main() { int D, I; while(scanf("%d%d", &D, &I) == 2) { int i, k = 1; for(i = 0; i < D - 1; i++) { if(I % 2 == 1) { k = k * 2; I = (I + 1)/2; //左子树比右子树多落一个 } else { k = k * 2 + 1; I = I / 2; } } printf("%d\n", k); } return 0; }
相关文章推荐
- HDU 2289 Cup
- HTML&CSS学习总结(一)
- 解决:AppMsg - Warning: calling DestroyWindow in CWnd::~CWnd; OnDestroy or PostNcDestroy in derived class will not be called
- [LeetCode] Word Search II
- 【Go语言】【18】GO语言的select
- 【Go语言】【18】GO语言的select
- 做微商还有很长微商卖什么孙佺推广的路要走,还有很多技巧要学习
- 大数据处理初探
- ios学习资料:
- 机器学习实战之KNN算法
- Android SharedPreference配合checkBox完成用户名和密码保存
- DHCP
- Java NIO系列教程(十) Java NIO DatagramChannel
- HDU4497 GCD and LCM
- c++类的初创建(复数类)
- 经典的报数问题
- 使用ApplicationContext作为全局变量引用的缺陷
- Java程序员要求具备的10项技能
- [SQLite]SQL语法
- windows远程桌面域的问题