第九题:【跳台阶】
时间限制:1 秒 内存限制:32768K
题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
输入:
输入可能包含多个测试样例,对于每个测试样例,
输入包括一个整数n(1<=n<=70)。
输出:
对应每个测试案例,
输出该青蛙跳上一个n级的台阶总共有多少种跳法。
样例输入:
5
样例输出:
8
思路:
先用穷举法找出规律,可以发现这是斐波那契数列的另一种展现思想。
这里有以下几点需要注意:
1、用非递归实现,递归会超时
2、结果要用long long保存,不然会发生结果的溢出,从而得到负值
3、如果是在VC++6.0下编译的,long long是illegal的,要用_int64代替,同时输出的转化以字符也要用%I64d代替%lld
C++
#include <iostream>
using namespace std;
void main()
{
long long jump[70];
int number;
jump[0]=0;
jump[1]=1;
jump[2]=2;
cout<<"自定义台阶的阶数:";
cin>>number;
for(int i=3;i<=number;i++)
jump[i]=jump[i-1]+jump[i-2];
cout<<"青蛙跳上一个"<<number<<"级的台阶总共有"<<jump[number]<<"种跳法";
}
程序运行界面
Java
import java.util.*;
class Solution {
public static void Solution(){
Scanner sc = new Scanner(System.in);
int number= sc.nextInt();
int []total;
total=new int[20];
total[0]=0;
total[1]=1;
total[2]=2;
for(int i=3;i<=number;i++)
total[i]=total[i-1]+total[i-2];
System.out.println("蛙跳上一个"+number+"级的台阶共有"
+total[number]+"种跳法");
}
public static void main(String[] args)
{
System.out.print("自定义台阶的阶数:");
Solution();
}
}
程序运行界面
部分内容来自:http://blog.csdn.net/ns_code/article/details/25337983