算法-【京东笔试】关于第K个幸运数(4和7)的算法
来源:互联网 发布:香港好玩吗 知乎 编辑:程序博客网 时间:2024/04/27 18:59
幸运数由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;}
0 0
- 算法-【京东笔试】关于第K个幸运数(4和7)的算法
- 第K个幸运数
- 第K个幸运数
- 算法之查找第k小的数和查找最小的k个元素
- Top K算法和寻找第K个最小的数
- 得到第K个大的数算法研究
- 京东笔试:幸运数
- 算法--选择第K小的数
- 算法--选择第K大的数
- 【算法】求第k大的数
- 算法分析:幸运数
- 幸运数 算法比赛
- 算法 幸运数+爬山
- 第k个幸运数字
- 【数据结构与算法分析】1.1 找出N个数字中第K大的数
- 算法思想:关于找数组中第K大的数的思考
- 关于在指定区间求第k小的数,求高效率算法
- BFPTR算法(中位数的中位数算法)求n个数中第k大的数
- 核函数K(kernel function)
- 按钮添加边框
- RaidoButton文字居中显示
- android开源框架android-async-http使用
- DESC命令
- 算法-【京东笔试】关于第K个幸运数(4和7)的算法
- 实验三--键盘输入数据
- 设计模式(单例模式、外观模式)
- Java自定义模板导出Excel
- 防止sql注入的方法
- CodeForces A. Letters Cyclic Shift【字符串】
- Requests:让 HTTP 服务人类
- Codeforces 510 E Fox And Dinner【预处理素数+建图+最大流Dinic】好题
- Java技术路线