HUD_5686_Problem B 和 牛客网《剑指offer》跳台阶
2016-05-24 16:04
513 查看
跳台阶
参与人数:10695时间限制:1秒空间限制:32768K
算法知识视频讲解
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
第一种解法,就是先一个两步都不走,然后一个两步,两个两步。。。。分别算方法树,然后累加。
其中走k个两步,就是,k个2 和n-2k个1,的排列组合,所以是C(k,n-k);
后来发现比这个方法更简单的方法。
n=1 有一种方法
n=2 11,2 两种
n=3 111,12,21,三种
。。。。。。正好是前一个格子的方法数+前一个的前一个格子的方法数 = 这个格子的方法数,因为前一个格子的所有方法,再走一步,前一个的前一个的所有方法,走两步。
所以居然变成了斐波那契数列。。。。。。
再来一个类似的题。
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 437 Accepted Submission(s): 157
Problem Description
度熊面前有一个全是由1构成的字符串,被称为全1序列。你可以合并任意相邻的两个1,从而形成一个新的序列。对于给定的一个全1序列,请计算根据以上方法,可以构成多少种不同的序列。
Input
这里包括多组测试数据,每组测试数据包含一个正整数N,代表全1序列的长度。
1≤N≤200
Output
对于每组测试数据,输出一个整数,代表由题目中所给定的全1序列所能形成的新序列的数量。
Sample Input
Sample Output
Source
2016"百度之星"
- 资格赛(Astar Round1)
Recommend
liuyiding
一个意思。。。。
参与人数:10695时间限制:1秒空间限制:32768K
算法知识视频讲解
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。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 jumpFloor(int number) { int sum = 0; for(int i=0;i<=number/2;i++) sum += zuheshu(i,number-i); return sum; } };
第一种解法,就是先一个两步都不走,然后一个两步,两个两步。。。。分别算方法树,然后累加。
其中走k个两步,就是,k个2 和n-2k个1,的排列组合,所以是C(k,n-k);
后来发现比这个方法更简单的方法。
n=1 有一种方法
n=2 11,2 两种
n=3 111,12,21,三种
。。。。。。正好是前一个格子的方法数+前一个的前一个格子的方法数 = 这个格子的方法数,因为前一个格子的所有方法,再走一步,前一个的前一个的所有方法,走两步。
所以居然变成了斐波那契数列。。。。。。
class Solution { public: int jumpFloor(int number) { if(number==1) return 1; if(number==2) return 2; if(number==3) return 3; int a=1; int b=2; int c=3; for(int i=4;i<=number;i++) { a=b; b=c; c=a+b; } return c; } };
再来一个类似的题。
Problem B
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 437 Accepted Submission(s): 157
Problem Description
度熊面前有一个全是由1构成的字符串,被称为全1序列。你可以合并任意相邻的两个1,从而形成一个新的序列。对于给定的一个全1序列,请计算根据以上方法,可以构成多少种不同的序列。
Input
这里包括多组测试数据,每组测试数据包含一个正整数N,代表全1序列的长度。
1≤N≤200
Output
对于每组测试数据,输出一个整数,代表由题目中所给定的全1序列所能形成的新序列的数量。
Sample Input
1 3 5
Sample Output
1 3 8 Hint 如果序列是:(111)。可以构造出如下三个新序列:(111), (21), (12)。
Source
2016"百度之星"
- 资格赛(Astar Round1)
Recommend
liuyiding
一个意思。。。。
相关文章推荐
- HTML5的placeHolder在IE9下workaround引发的Bug(按下葫芦起了瓢)
- 你未必知道的12个JavaScript技巧
- A Visual Git Reference
- CanvasJS学习
- 使用jsx语法环境搭建
- js原生写的微博留言板有angularjs效果
- 样式主题与自定义View 浅谈
- canvas画水球
- angular js
- 处理字符串的一些js/jq方法(去除HTML,去除空格,计算真实长度,截取中英文字符)
- jquery 简短代码
- Ext JS 6开发实例(二) :使用CMD创建应用程序
- Ext JS 6开发实例(二) :使用CMD创建应用程序
- Ext JS 6开发实例(二) :使用CMD创建应用程序
- Ext JS 6开发实例(二) :使用CMD创建应用程序
- listView 上拉加载更多 和 加载样式的自定义
- IoC and DI JSR-299 JSR-330
- B - I NEED A OFFER!——HOJ 类0-1背包问题 +滚动数组
- JqueryMobile Demo
- 文章标题