变态跳台阶,最终导向HDU_5698_瞬间移动
2016-05-24 16:42
281 查看
变态跳台阶
参与人数:8361时间限制:1秒空间限制:32768K
算法知识视频讲解
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
法一:参考了/article/8380543.html
思路是先考虑一步到n级台阶有多少种方法,然后两步,三步。。一直到n步。。
每一个K步 就好像在n-1个盒子里 装k-1个球一样
方法二:把前面的各格子的方法数 累加然后再+1
方法三: c(n-1,0)+c(n-1,1)+...+c(n-1,n-1)=2^(n-1) 绝了。。
然后,这个理由就是,每个格子都只能跳或者不跳,所以除了最后一个格子必跳外,前面的n-1个都各有两个状态,所以2^(n-1)
参与人数:8361时间限制:1秒空间限制:32768K
算法知识视频讲解
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。法一:参考了/article/8380543.html
思路是先考虑一步到n级台阶有多少种方法,然后两步,三步。。一直到n步。。
每一个K步 就好像在n-1个盒子里 装k-1个球一样
class Solution { public: int zuheshu(int n,int m) { long long result=1; if(n<m-n) n=m-n; for(int i=m;i>n;i--) { result *=i; } for(int i=m-n;i>0;i--) { result /=i; } return result; } int jumpFloorII(int number) { int sum=0; for(int i=1;i<=number;i++){ sum += zuheshu(number-i,number-1); } return sum; } };
方法二:把前面的各格子的方法数 累加然后再+1
class Solution { public: int a[1010]; int jumpFloorII(int number) { init(); return a[number]; } void init(){ a[1]=1; a[2]=2; for(int i=3;i<=1000;i++){ a[i] = 1; for(int j=1;j<i;j++) a[i] += a[j]; } } };
方法三: c(n-1,0)+c(n-1,1)+...+c(n-1,n-1)=2^(n-1) 绝了。。
然后,这个理由就是,每个格子都只能跳或者不跳,所以除了最后一个格子必跳外,前面的n-1个都各有两个状态,所以2^(n-1)
class Solution { public: int jumpFloorII(int number) { int sum = 1; for(int i=1;i<number;i++) sum *=2; return sum; } };甚至!!!!
class Solution { public: int jumpFloorII(int number) { return 1<<(number-1); } };
相关文章推荐
- VMware12+Ubuntu16.04 安装 以及全屏的实现
- GCD基础
- 1.处理屏幕触摸(单点触摸)
- 视图添加移动手势
- jQuery前端开发35个小技巧
- ZOJ-1610 Count the Colors
- centos7安装docker
- POJ 1251
- [文摘20160524]为什么你的孩子不像德国孩子那样自律?看过这个就知道怎么做了!
- iOS常识名词解释 2016/04/05
- tabBar的图标不被系统渲染
- Clang Format
- C++ 值传递、指针传递、引用传递
- mysql 修改data目录后 无法使用脚本启动 推荐
- 第13周-交通类(3)
- 模拟实现部分库函数(strcpy,strcmp,strcat,strstr,memcpy,memmove,memset)
- Picasso 图片请求库(工具类)
- Open Baidu webpage and type in Chinese characters to start searching, press “Back” button to go to B
- 3、Git基本的工作流程
- HDU 1669 Monkey and Banana