剑指offer(四)
2015-11-07 09:42
387 查看
1.菲波那切数列:(循环实现,非递归)
#include <iostream> #include <algorithm> using namespace std; int Feb(int n) { if(n==0) return 0; if(n==1) return 1; int sum=0,last1=0,last2=1; for (int i=1;i<n;i++) { sum=last1+last2; last2=sum; last1=last2; } return sum; } int main() { int n=Feb(5); return 0; }2.求一个整数如果用二进制表示,有多少个1(每次都是最右边的1为0)
#include <iostream> #include <algorithm> using namespace std; int number1(int n) { int count=0; while (n) { count++; n=n&(n-1); } return count; } int main() { int n=number1(5); return 0; }3.求两个数需要改变多少位之后才会变成相同的。(先求异或,然后求1的个数)
#include <iostream> #include <algorithm> using namespace std; int number1(int n,int m) { int temp=n^m; int count=0; while (temp) { count++; temp=temp&(temp-1); } return count; } int main() { int n=number1(10,13); return 0; }4.数值的整数次方:(要考虑异常处理 0 的-1次方,这个要考虑到)
#include <iostream> #include <algorithm> using namespace std; char valid=0;//异常处理 int reslut(int base,int exp) { if (exp==1) return base; int re1=reslut(base,exp>>1); re1*=re1; if(exp&0x1==1) return (re1*base); else return re1; } double number1(int n,int m) { if(n==0&&m<0) { valid=1; return 0; } if(m==0) return 1; char flag=0; if(m<0) { flag=1; m=-m; } int re=reslut(n,m); if(flag) return(1.0/re); else return(re); } int main() { double n=number1(0,-5); return 0; }
相关文章推荐
- css input[type=file] 样式美化,input上传按钮美化
- js去除字符串的前后空格
- jquery之data
- Htmlparser 中的各种Filter介绍
- 基于HTML5的WebGL电信网管3D机房监控应用
- 基于HTML5的WebGL电信网管3D机房监控应用
- 图片旋转、无限滚动、文字跳动
- Why SIPfoundry decided to offer support
- 【JavaScript知识点二】JavaScript 变量
- 菜鸟日记之JSP1
- JavaScript的闭包特性 如何给循环中的对象添加事件
- CSS/LESS tips and snippets
- 关于jQuery UI样式不能应用问题的解决
- html横向树目录
- jquery的if语句
- jquery判断当前浏览器的实现代码
- web页面上显示当前系统时间
- 【JavaScript知识点一】JavaScript 数据类型
- jQuery插件开发精品教程(让你的jQuery更上一个台阶)
- zufe 神奇的序列计算 (树状数组)