[编程题] N阶楼梯上楼问题

import sys
for line in sys.stdin:
    N=int(line.split()[0])

    d1=1
    d2=2

    if(N==1):
        print 1
        continue
    elif(N==2):
        print 2
        continue

    for i in xrange(N-2):
        d1, d2=d2, d1+d2

    print d2

动态规划,入门题,属于 斐波那契数列 的变形, 没学过算法之前使用穷举法发现耗时较大。

时间: 2024-10-15 04:04:18

[编程题] N阶楼梯上楼问题的相关文章

计算机考研复试真题 N阶楼梯上楼问题

题目描述 N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用非递归) 输入描述: 输入包括一个整数N,(1<=N<90). 输出描述: 可能有多组测试数据,对于每组数据, 输出当楼梯阶数是N时的上楼方式个数. 示例1 输入 4 输出 5 /*程序设计思想:类似于斐波拉契数列,采用迭代思想.*/ #include <iostream> using namespace std; long long F[100]; int main() { F[1] = 1; F[2

九度OJ—题目1205:N阶楼梯上楼问题 (非递归)

题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用非递归) 输入: 输入包括一个整数N,(1<=N<90). 输出: 可能有多组测试数据,对于每组数据, 输出当楼梯阶数是N时的上楼方式个数. 样例输入: 4 样例输出: 5 来源: 2008年华中科技大学计算机保研机试真题 答疑: 解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-7928-1-1.html 基本思路: 走到第n阶时可能是从第n-1阶走一步到的,也可能

题目1205:N阶楼梯上楼问题(递推求解)

题目1205:N阶楼梯上楼问题 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:4547 解决:1836 题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用非递归) 输入: 输入包括一个整数N,(1<=N<90). 输出: 可能有多组测试数据,对于每组数据,输出当楼梯阶数是N时的上楼方式个数. 样例输入: 4 样例输出: 5 #include<iostream> #include<stdio.h> #include<qu

九度OJ 1205 N阶楼梯上楼问题 (DP)

题目1205:N阶楼梯上楼问题 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:2817 解决:1073 题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用非递归) 输入: 输入包括一个整数N,(1<=N<90). 输出: 可能有多组测试数据,对于每组数据, 输出当楼梯阶数是N时的上楼方式个数. 样例输入: 4 样例输出: 5 基本思路: 走到第n阶时可能是从第n-1阶走一步到的,也可能是从n-2阶走两阶到的, 设F(n)为走到n阶的走法数量,则状态

九度 题目1205:N阶楼梯上楼问题

题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用非递归) 输入: 输入包括一个整数N,(1<=N<90). 输出: 可能有多组测试数据,对于每组数据, 输出当楼梯阶数是N时的上楼方式个数. 样例输入: 4 样例输出: 5 分析:第n阶台阶的方法等于上到第n-1阶台阶的方法加上第n-2阶的台阶的方法之和,因为89阶的时候已经超过2的32次方,所以用long long int 代码如下: #include <stdio.h> long long int

1205 N阶楼梯上楼问题

/* 题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用非递归) 输入: 输入包括一个整数N,(1<=N<90). 输出: 可能有多组测试数据,对于每组数据, 输出当楼梯阶数是N时的上楼方式个数. 样例输入: 4 样例输出: 5 基本思路: 走到第n阶时,可能是从第n-1阶走一步到的,也可能是从n-2阶走两阶到的,设F(n)为走到n阶的种数,则F(n)=F(n-1)+F(n-2). 这是一个动态规划的问题,其实就是一个斐波那契数列. 1 2 3 5 8 13 .

题目1205:N阶楼梯上楼问题

题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用非递归) 输入: 输入包括一个整数N,(1<=N<90). 输出: 可能有多组测试数据,对于每组数据,输出当楼梯阶数是N时的上楼方式个数. 样例输入: 4 样例输出: 5 1 import java.util.Scanner; 2 3 4 public class Main{ 5 public static void main(String[]args){ 6 long[]F=new long[90]; 7 F[

[编程题-京东]上台阶

[编程题] 上台阶 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少走法?注:规定从一级到一级有0种走法. 给定一个正整数int n,请返回一个数,代表上楼的方式数.保证n小于等于100.为了防止溢出,请返回结果Mod 1000000007的值. 测试样例: 3 返回:2 class GoUpstairs { public: int countWays(int n) { // write code here if(n==1) return 1; int f0=

力扣第70题:爬楼梯

力扣第70题:爬楼梯 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶. 1 阶 + 1 阶 2 阶 示例 2: 输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶. 1 阶 + 1 阶 + 1 阶 1 阶 + 2 阶 2 阶 + 1 阶 ? int climbStairs(int n) { if (n <= 1) { re