【前端】剑指offer题解每日一更
2018-07-30 本文已影响0人
玉面小猿
题目
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法
思路
先按照排列组合原理写出n个台阶的跳法
n | 可得到的跳台阶方法 |
---|---|
0 | 0 |
1 | 1 |
2 | 2 |
3 | 4 |
4 | 8 |
5 | 16 |
解法
#include <iostream>
#include <string>
#include <algorithm>
//变态青蛙跳台阶
using namespace std;
class Solution {
public:
int jumpFloorII(int number) {
int sum = 0; //定义输出总和
int arr[1001] = { 1,1,2 };
//初始化最初的三个数,作为基数
//对于1 1 2 进行特殊处理
if (number <= 2) { return arr[number]; }
else {
//对于当前的数字来说,需要加上它之前的所有数字
for (int i = 3; i <= number; i++) {
for (int j = 0; j <= i; j++)
//加上第0 1 2 3个数字
arr[i] += arr[i - j];
}
return arr[number];
}
}
};
int main() {
int n;
cin >> n;
//定义一个接口
Solution Fbnc;
//拿到实现的成员函数的值
int result = Fbnc.jumpFloorII(n);
cout << result;
system("pause");
}