[劍指Offer]1.跳台階
- 題目描述:
-
一隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上一個n級的台階總共有多少種跳法。
- 輸入:
-
輸入可能包含多個測試樣例,對於每個測試案例,
輸入包括一個整數n(1<=n<=70)。
- 輸出:
-
對應每個測試案例,
輸出該青蛙跳上一個n級的台階總共有多少種跳法。
- 樣例輸入:
-
5
- 樣例輸出:
-
8
/*********************************
* 日期:2013-11-15
* 作者:SJF0115
* 題號: 題目1388:跳台階
* 來源:https://ac.jobdu.com/problem.php?pid=1388
* 結果:AC
* 來源:劍指Offer
* 總結:
**********************************/
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
//F(n) = F(n-1) + F(n-2)
long long Fibonacci(int n){
int i;
long long fibonacciA = 1;
long long fibonacciB = 2;
long long fibonacciC;
if(n == 1){
return fibonacciA;
}
else if(n == 2){
return fibonacciB;
}
for(i = 3;i <= n;i++){
fibonacciC = fibonacciA + fibonacciB;
fibonacciA = fibonacciB;
fibonacciB = fibonacciC;
}
return fibonacciC;
}
int main()
{
int i,n;
while(scanf("%d",&n) != EOF){
printf("%lld\n",Fibonacci(n));
}
return 0;
}
#include <stdio.h>
#include <math.h>
int main()
{
int n,i,j;
double Fibonacci[71];
Fibonacci[0] = 0;
Fibonacci[1] = 1;
Fibonacci[2] = 2;
while(scanf("%d",&n) != EOF){
for(int i = 3;i <= n;i++){
Fibonacci[i] = Fibonacci[i-1] + Fibonacci[i-2];
}
printf("%.0lf\n",Fibonacci[n]);
}
return 0;
}
代碼三
/*---------------------------------------
* 日期:2015-07-19
* 作者:SJF0115
* 題目: 1.跳台階
* 網址:https://www.nowcoder.com/books/coding-interviews/8c82a5b80378478f9484d87d1c5f12a4?rp=1
* 結果:AC
* 來源:劍指Offer
* 博客:
-----------------------------------------*/
#include <iostream>
using namespace std;
class Solution {
public:
int jumpFloor(int number) {
if(number == 1){
return 1;
}//if
else if(number == 2){
return 2;
}//else
return jumpFloor(number - 1) + jumpFloor(number - 2);
}
};
int main(){
Solution s;
int number = 3;
cout<<s.jumpFloor(number)<<endl;
return 0;
}
最後更新:2017-04-03 14:54:06