[剣指Offer]1.階段を跳ぶ
タイトルの説明:
1匹のカエルは一度に1段の階段を飛び上がることも、2段を飛び上がることもできます.このカエルが1つのn級の階段を跳ぶことを求めて全部で何種類の跳び方があります.
入力:
入力には、各テストケースについて、複数のテストケースが含まれる場合があります.
入力は整数n(1<=n<=70)を含む.
出力:
各テストケースに対応し、
出力カエルがn段の階段を飛び上がるのに何種類の飛び方があるのか.
サンプル入力:
サンプル出力:
コード3
1匹のカエルは一度に1段の階段を飛び上がることも、2段を飛び上がることもできます.このカエルが1つのn級の階段を跳ぶことを求めて全部で何種類の跳び方があります.
入力:
入力には、各テストケースについて、複数のテストケースが含まれる場合があります.
入力は整数n(1<=n<=70)を含む.
出力:
各テストケースに対応し、
出力カエルがn段の階段を飛び上がるのに何種類の飛び方があるのか.
サンプル入力:
5
サンプル出力:
8
/*********************************
* :2013-11-15
* :SJF0115
* : 1388:
* :http://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
",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
",Fibonacci[n]);
}
return 0;
}
コード3
/*---------------------------------------
* :2015-07-19
* :SJF0115
* : 1.
* :http://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;
}