050day(遞迴思想在問題分解上的應用(爬樓梯))
172210704111-陳國佳總結《2017年11月29日》【連續050天】
標題:遞迴思想在問題分解上的應用(爬樓梯);
內容:用遞迴將問題分解為規模更小的子問題進行求解;
例題:爬樓梯,樹老師爬樓梯,他可以每次走1級或者2級,輸出樓梯的級數,求不同的走法數;
輸入包含若干行,每行包含一個正整數N,代表樓梯級數,1<=N<=30;
輸出不同的走法數,每一行輸入對應一行;
解析:
n級臺階的走法=(先走一級後,n-1級臺階的走法)+(先走兩級後,n-2級臺階的走法)
f(n)=f(n-1)+f(n-2);
邊界條件:n=3,返回3;n=2,返回2;
int stairs(int n)
{
if(n==2)return 2;
if(n==1)return 1;
return stairs(n-1)+stairs(n-2);
}
int main()
{
int N;
while(cin>>N){
cout<<stairs(N)<<endl;
}
return 0;
}
明日計劃:複習;
相關推薦
050day(遞迴思想在問題分解上的應用(爬樓梯))
172210704111-陳國佳總結《2017年11月29日》【連續050天】 標題:遞迴思想在問題分解上的應用(爬樓梯); 內容:用遞迴將問題分解為規模更小的子問題進行求解; 例題:爬樓梯,樹老師爬樓梯,他可以每次走1級或者2級,輸出樓梯的級數,求不同的走法數; 輸入包含
資料結構--遞迴的幾個應用(求和,階乘,漢諾塔)
定義 一個函式自己呼叫自己遞迴的條件 必須要有明確的終止條件 所處理的資
棧---定義、應用(遞迴、字尾表示式實現數學表示式求值)
一、定義 棧是限定僅在表尾進行插入和刪除操作的線性表。因此,棧的表尾端稱為棧頂;表頭端稱為棧底。不含任何資料元素的棧稱為空棧。棧又稱為後進先出(Last In First Out)的線性表,簡稱LIF0結構。 理解棧的定義需要注意:首先它是一個線性表,也即棧
資料結構——棧的應用(遞迴經典:Hanoi)
程式碼來源於:【資料結構】【嚴蔚敏】 遞迴經典問題:漢諾塔(插個題外話哈,Hanoi是越南首都河內) 思路(關鍵理解點): 假設只有兩個盤子(實在沒法完全理解全部過程的,把兩個盤子的過程捋清楚了,程式碼也就記住了) (n=2,x=a,y=b,z=c) { hanoi(1,x,z,y);
高維空間中的體積(包含遞迴思想的初步理解)
n維超球體的體積的變化的特點:當n<=7的時候,體積是增大的;當n>7的時候,體積是縮小的,可以小到0 因此可以從中推出,如果以固定的半徑進行取樣,這取到的樣本的數量是先增大,然後再縮小的。 遞迴思想的通俗理解:你打開面前這扇門,看到屋裡面還有一扇門。你走過去,發現手中的鑰匙還可以開啟它,你推
HDU - 1995 奇妙的塔 (漢諾塔遞迴思想詳解)
用1,2,...,n表示n個盤子,稱為1號盤,2號盤,...。號數大盤子就大。經典的漢諾塔問 題經常作為一個遞迴的經典例題存在。可能有人並不知道漢諾塔問題的典故。漢諾塔來源於 印度傳說的一個故事,上帝創造世界時作了三根金剛石柱子,在一根柱子上從下往上按大小
合數的因式分解(遞迴求解,兩種方法)
#include <stdio.h> #include <math.h> //判斷一個數是不是素數 int isPrime(int n) { if(n<2)return 0 ;else{int t = (int)sqrt(n);int
(遞迴)整數分解為若干項之和
輸入樣例: 7 輸出樣例: 7=1+1+1+1+1+1+1;7=1+1+1+1+1+2;7=1+1+1+1+3;7=1+1+1+2+2 7=1+1+1+4;7=1+1+2+3;7=1+
java中的遞迴思想及應用
遞迴就是自己調自己,最需要注意的就是結束條件,否則可能就是死迴圈,導致記憶體溢位 public T a(Object x,Object y) { if(條件true) { a(x1,y1); } else { return f(x,y);
一些利用遞迴思想的簡單程式設計題(JS實現)
1. 使用遞迴函式計算1+2+...100的值。2. 定義函式,宰相的麥子:相傳古印度宰相達依爾,是國際象棋的發明者。 有一次,國王因為他的貢獻要獎勵他,問他想要什麼。 達依爾說:“只要在國際象棋棋盤上(共64格)擺上這麼些麥子就行了: 第一格一粒,第二格兩粒,…
棋盤覆蓋(遞迴的應用)
當k>0時,將2k×2k棋盤分割為4個2k-1×2k-1子棋盤(a)所示。 特殊方格必位於4個較小子棋盤之一中,其餘3個子棋盤中無特殊方格。為了將這3個無特殊方格的子棋盤轉化為特殊棋盤,可以用一個L型骨牌覆蓋這3個較小棋盤的會合處,如 (b)所示,從而將原問
leetcode 112. Path Sum(C語言,二叉樹,遞迴思想)28
貼原題: Given a binary tree and a sum, determine if the tree has aroot-to-leaf path such that adding
上臺階問題(遞迴)
運用遞迴的思路 import java.util.Scanner; public class Main { public static void main(String[] args
因式分解一個正整數(遞迴方法)
#include <iostream> #include <vector> #include <cstdio> #include <cstring> #include <cstdlib> #include <
Python實現FTP上傳檔案或資料夾(遞迴)
__author__ = 'dacxu' __mail__ = 'xudacheng06.com' __date__ = '2013-10-29' __version = 1.0 import sys import os import json from ftplib i
二叉樹的先序/中序/後序(遞迴、非遞迴)+層序遍歷
queue 的基本操作舉例如下: queue入隊,如例:q.push(x); 將x 接到佇列的末端。 queue出隊,如例:q.pop(); 彈出佇列的第一個元素,注意,並不會返回被彈出元素的值。 訪問queue隊首元素,如例:q.front(),即最早被壓入佇列的元素。 訪問que
Recursive Autoencoders(遞迴自動編碼器)
1. 前言 今天主要介紹用在NLP中比較常見的AutoEncoder的模型,Recursive Autoencoders(遞迴自動編碼模型)。這篇文章主要討論RAE在序列化的資料中,如何把資料降維並且用向量表示。 2. 矩陣表示 假設我們有一個矩陣\(L\)的表示向量,一個有序的有\(m\)個元素的序列
【qduoj - 夏季學期創新題】矩形剖分(遞迴,dp)
題幹: 描述 對一個給定的矩形,將其劃分成儘可能少的正方形,輸出正方形的最少個數。例如,如下圖所示的情況,則輸入為3和4,輸出為4。 輸入 輸入兩個整數中間用空格分開。 輸出 輸出最少分割成的正方形的個數。 輸入樣
二叉樹的建立和遍歷(遞迴建樹&層序遍歷建樹)
#include<stdio.h>#include <cstdlib>#include <iostream>#include <stack>#include<queue>using namespace std; //二叉樹定義typedef cha
二叉樹的前中後序遍歷(遞迴和非遞迴版本)
各位讀者週末愉快呀,今天我想來說說一道很常見的面試題目 —— 關於二叉樹前中後序遍歷的實現。本文將以遞迴和非遞迴方式實現這 3 種遍歷方式,程式碼都比較短,可以放心食用。 先簡單說明一下這 3 種遍歷方式有什麼不同 —— 對於每種遍歷,樹中每個結點都需要經過 3 次(對於葉結點,其左右子樹視為空子樹),但前