算法-【京东笔试】关于第K个幸运数(4和7)的算法
2016-09-06 11:16
190 查看
幸运数由4和7构成,幸运数按照从小到大的排列。可以发现这其实就是树的广度优先搜索。广度优先搜索到的节点与根节点(设为空值)的路径上组成的数就是按照从小到大读的。
本文想出一种较为直观的算法。第一步,求出树的深度;第二步,求出最后一行有多少元素。根据元素的奇偶性质可以判断父节点时4还是7 ,循环到顶 ;第三步,利用堆栈弹出即可。
现场很遗憾么有写出,希望以后谋定而后动,掌握好自己的节奏很重要!
本文想出一种较为直观的算法。第一步,求出树的深度;第二步,求出最后一行有多少元素。根据元素的奇偶性质可以判断父节点时4还是7 ,循环到顶 ;第三步,利用堆栈弹出即可。
现场很遗憾么有写出,希望以后谋定而后动,掌握好自己的节奏很重要!
#include<iostream> #include<math.h> #include<stack> using namespace std; int dep(int n) { int i=1; while((pow(2,i+1)-2)<n) { i++; } return i-1; } int main() { int n; while(cin>>n) { stack<int> ans; int depth=dep(n);//求除最后一行的深度 int levelNumLast=n-(pow(2,depth+1)-2); while(depth>=0) { if(levelNumLast%2==0) { ans.push(7); } else { ans.push(4); } levelNumLast=(levelNumLast+1)/2; depth--; } while(!ans.empty()) { cout<<ans.top(); ans.pop(); } cout<<endl; } return 0; }
相关文章推荐
- 笔试面试中关于数组的常见算法
- 笔试算法题(03):最小第K个数 & 判定BST后序序列
- 【数据结构与算法】京东笔试题 去右括号
- 月初新浪的一道关于算法的笔试题
- 京东笔试题——幸运数
- 名企笔试:2016京东笔试(抛小球)2017-05-14 算法爱好者
- 笔试算法题(08):输出倒数第K个节点
- 京东笔试之幸运数问题:4,7
- 京东2017校园招聘数据与算法方向笔试题
- 京东笔试:幸运数
- 京东算法笔试
- 京东2017校园招聘笔试题 幸运数
- 2016京东算法工程师实习生笔试编程题:上台阶
- 名企笔试:京东算法工程师笔试题(排序问题)
- 算法编程题积累(2)——京东笔试“求概率”问题
- 算法与数据结构——京东笔试题
- 京东算法笔试
- 2016京东算法工程师实习生笔试编程题:小球的距离
- 月初新浪的一道关于算法的笔试题