一個臺階總共有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
煤球數目 有一堆煤球,堆成三角稜錐形。具體: 第一層放1個, 第二層3個(排列成三角形), 第三層6個(排列成三角形), 第四層10個(排列成三角形), .... 如果一共有100層,共有多少個煤球?
package LQB; public class B2016Yc1 { public static void main(String[] args) { int num = 0; int sum=0; for(int i = 1;i<=100;i++){ num+=i; su
只開啟一個程式,如果第二次開啟則自動將第一個程式顯示到桌面
using System;using System.Collections.Generic;using System.Windows.Forms;using System.Runtime.InteropServices;using System.Diagnostics;using System.Refl
2的n次冪,判斷一個數是否能寫成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 ,