1. 程式人生 > >一個臺階總共有n級,如果一次可以跳1級,也可以跳2級。求總共有 多少總跳法。

一個臺階總共有n級,如果一次可以跳1級,也可以跳2級。求總共有 多少總跳法。

/*
[email protected] 轉載請註明出處
題目:一個臺階總共有n級,如果一次可以跳1級,也可以跳2級。求總共有
多少總跳法。
分析:
這道題最近經常出現,包括MicroStrategy等比較重視演算法的公司都曾
先後選用過個這道題作為面試題或者筆試題。
首先我們考慮最簡單的情況。如果只有1級臺階,那顯然只有一種跳法。
如果有2級臺階,那就有兩種跳的方法了:一種是分兩次跳,每次跳1
級;另外一種就是一次跳2級。
現在我們再來討論一般情況。我們把n級臺階時的跳法看成是n的函式,
記為f(n)。
當  n=1 時有  1 種跳法
一次跳一階
當  n=2 時有  2 種跳法
一次跳一階,  1 1
一次跳二階  2
當n>2時,第一次跳的時候就有兩種不同的選擇:
一是第一次只跳1級,此時跳法數目等於後面剩下的n-1級臺階的跳法
數目,即為f(n-1);
另外一種選擇是第一次跳2級,此時跳法數目等於後面剩下的n-2級臺
階的跳法數目,即為f(n-2)。
因此n級臺階時的不同跳法的總數f(n)=f(n-1)+ f(n-2)。
*/
#include <cstdlib>
#include <iostream>

int Fibonacci(int n){
  int prepre = 1;
  int pre = 2;
  int res = 0;
  for(int i = 3; i <= n; ++i){
    res = pre + prepre;
    prepre = pre;
    pre = res;
  }
  return res;
}

int main(int argc, char ** argv){
  int n = 5;

  int num = Fibonacci(n);

  std::cout<<num<<std::endl;

  system("pause");
  return 0;
}

相關推薦

一個臺階共有n如果可以1可以2 總共多少並分析演算法的時間複雜度

一個臺階總共有n級,如果一次可以跳1級,也可以跳2級。 求總共有多少總跳法,並分析演算法的時間複雜度。 設:總共有F(n)種跳法 那麼, F(1) = 1; F(2)= 2; F(

一個臺階共有n 如果可以1 可以2 總共多少並分析演算法的時間複雜度

這是華哥那天問我的,當時不想動腦。回來後,網上看了一下,原理很簡單,用到了遞迴。但我遞迴很菜。。。 他的思路是: 我們把n 級臺階時的跳法看成是n 的函式,記為f(n)。當n>2 時,第一次跳的時候就有兩種不同的選擇:一是第一次只跳1 級,此時跳法數目等於後面剩下的n

一個臺階共有n如果可以1可以2總共 多少

/* [email protected] 轉載請註明出處 題目:一個臺階總共有n級,如果一次可以跳1級,也可以跳2級。求總共有 多少總跳法。 分析: 這道題最近經常出現,包括MicroStrategy等比較重視演算法的公司都曾 先後選用過個這道題作為面試題或者筆試

如何實現新增多條資訊到GridView中儲存到資料庫不被頁面重新整理而丟失資料呢?

前面我們提到了,如果想要一次將從TextBox資訊新增到GridView的幾行資料記錄新增到資料庫中,我們在設計ASP.NET的頁面時,建議採用AJAX技術,進行區域性資料重新整理。 如圖所示:【建議在IE瀏覽器下執行】以下都是控制元件的拖動,大家都懂的。 另外,在pro

樓梯上n臺階上樓時可以步上1可以步上兩階編寫演算法計算共有多少種不同的上樓梯的方法

數學模型:此問題如果按照習慣,從前向後思考,也就是從第一階開始,考慮怎麼樣到第二階、第三節、第四階……則很難找到問題的規律;而反過來先思考“到第n階有哪幾種情況”,答案就簡單了,只有兩種情況; (1)

N臺階(比如100每次可走1步或者2總共多少種走法?

走臺階演算法(本質上是斐波那契數列)在面試中常會遇到,描述就如題目那樣:總共100級臺階(任意級都行),小明每次可選擇走1步、2步或者3步,問走完這100級臺階總共有多少種走法? 一、 題目分析 這個問題本質上是斐波那契數列,假設只有一個臺階,那麼只有一種跳法,那

用shell腳本寫出檢測/tmp/size.log文件如果存在顯示它的內容不存在則創建一個文件將創建時間寫入

ucc col pan success span shell shell腳本 sts exist 1 #!/bin/bash 2 if [ -d "/tmp" ]; then 3 echo "/tmp is exists" 4 else 5 mkdir /tm

只開啟一個程式如果第二開啟則自動將第一個程式顯示到桌面

using System;using System.Collections.Generic;using System.Windows.Forms;using System.Runtime.InteropServices;using System.Diagnostics;using System.Refl

2n判斷個數是否能寫成m個2相乘LeetCode 231號問題 給定一個整數編寫一個函式來判斷它是否是 2 的冪次方

2的n次冪,判斷一個數是否能寫成m個2相乘,LeetCode 231號問題 給定一個整數,編寫一個函式來判斷它是否是 2 的冪次方。 示例 1: 輸入: 1 輸出: true 解釋: 20 = 1 示例 2: 輸入: 16 輸出: true 解釋: 24 = 16 示例 3:

對於大於 11 的數如果除了 11 和它本身它不能再被其它正整數整除那麼我們說它是一個質數

對於大於 1 的數,如果除了 1 和它本身,它不能再被其它正整數整除,那麼我們說它是一個質數。曉萌想判斷一個數是不是質數,希望找你寫個程式,幫助她進行判斷。 輸入格式 輸入包括一行,為一個整數 N(1<N≤1000),正是曉萌給出你讓你判斷的數字。 輸出格式 輸出包

.編寫一個程式可以一直接收鍵盤字元 如果是小寫字元就輸出對應的大寫字元 如果接收的是大寫字元就輸出對應的小寫字元 如果是數字不輸出

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<stdlib.h> int main() { int i = 0; printf("請輸入一個數字:"); scanf("%d", &i);

編寫一個程式可以一直接收鍵盤字元 如果是小寫字元就輸出對應的大寫字元 如果接收的是大寫字元就輸出對應的小寫字元 如果是數字不輸出

#include<stdio.h> #include<stdlib.h> int main(){ int ch = 0; printf("請輸入一個字元!\n"); while ((ch = getchar()) != 0){ //迴圈中ch均表示為ASCII

編寫一個程式可以一直接收鍵盤字元 如果是小寫字元就輸出對應的大寫字元 如果接收的是大寫字元就輸出對應的小寫字元 如果是數字不輸出

執行環境:win10  vs2013 編寫一個程式,可以一直接收鍵盤字元,  如果是小寫字元就輸出對應的大寫字元,  如果接收的是大寫字元,就輸出對應的小寫字元,  如果是數字不輸出。       

給出一個含有n個數字的序列a1,a2,a3,...an可以進行以下操作: 操作定義為對這個序列的每個數字進行以下兩種改變之一: 1.ai ÷ 2 2.ai × 3 每的操作中必須保證至少有

JAVA 給出一個含有n個數字的序列a1,a2,a3,…an,可以進行以下操作: 一次操作定義為對這個序列的每個數字進行以下兩種改變之一: 1.ai ÷ 2 2.ai × 3 每一次的操作中,必須保證至少有一個數字是第1種改變;並且經過每次操作後,每一

springmvc在處理請求過程中出現異常資訊交由異常處理器進行處理自定義異常處理器可以實現一個系統的異常處理邏輯為了區別不同的異常通常根據異常型別自定義異常類這裡我們建立一個自定義系統異常,如果controller、service、dao丟擲此類異常說明是系統預期處理的異常資訊

springmvc在處理請求過程中出現異常資訊交由異常處理器進行處理,自定義異常處理器可以實現一個系統的異常處理邏輯。 1.1 異常處理思路 系統中異常包括兩類:預期異常和執行時異常RuntimeException,前者通過捕獲異常從而獲取異常資訊,後者主要通過規範程式碼開發、測試通過手段減少執

【hssdw25172008的專欄】工作以後發現平時要解決很多經典的問題對於解決的方法,總不知道儲存在哪兒好;經常瀏覽別人的部落格感覺很好,如果自己可以通過寫博既保證了學到了知識不被忘卻還能與更多的朋友交流學習!因此決定寫博

工作以後,發現平時總要解決很多經典的問題,對於解決的方法,總不知道儲存在哪兒好;經常瀏覽別人的部落格,感覺很好,如果自己可以通過寫博,既保證了學到了知識不被忘卻,還能與更多的朋友交流學習!因此,決定寫博...

【c語言】實現對一個8bit資料(unsigned char 型別)的指定位(例如第n位)置0或者置1操作並保持其他位不變

// 實現對一個8bit資料(unsigned char 型別)的指定位(例如第n位)置0或者置1操作,並保持其他位不變 #include <stdio.h> void bit_set(unsigned char *p_data, unsigned char

js全選全選以後如果選中其中一個全選效果取消如果複選框全部選中全選按鈕自動被選中

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html

共有n個人,給定m對好友關係,好友的好友一個朋友圈,問n個人中共有幾個朋友

題目:假如已知有n個人和m對好友關係(存於數字r)。如果兩個人是直接或間接的好友(好友的好友的好友...),則認為他們屬於同一個朋友圈,請寫程式求出這n個人裡一共有多少個朋友圈。假如:n = 5 , m = 3 , r = {{1 , 2} , {2 , 3} , {4 ,