一個樓梯有N個臺階,小明從臺階最底層地面上樓梯,小明一次可最大跨3階(也就是說每次邁步可以上1階,2階,或者3階)。問小明爬上頂一共有多少中步伐組合
def fun(n):
if n ==0:
return ‘error’
elif n 1:
return 1
elif n2:
return 2
else:
return fun(n-1)+fun(n-2)
print(fun(3))
def fun(b):
if b ==0:
return ‘error’
elif b 1:
return 1
elif b == 2:
return 2
elif b3:
return 4
else:
return fun(b-1)+fun(b-2)+fun(b-3)
print(fun(5))
相關推薦
一個樓梯有N個臺階,小明從臺階最底層地面上樓梯,小明一次可最大跨3階(也就是說每次邁步可以上1階,2階,或者3階)。問小明爬上頂一共有多少中步伐組合
def fun(n): if n ==0: return ‘error’ elif n 1: return 1 elif n2: return 2 else: return fun(n-1)+fun(n-2) print(fun(3)) def fun(b):
樓梯有n階臺階,上樓可以一步上1階,2階,3階,程式設計序計算共有多少種不同的走法?
提示:設n階臺階的走法數為f(n)。如果只有1個臺階,走法有1種(一步上1個臺階),即f(1)=1;如果有2個臺階,走法有2種(一種是上1階,再上1階,另一種是一步上2階),即f(2)=2;如果有3個
報數遊戲 有n個孩子站成一圈,從第一個孩子開始順時針方向報數,報到3的人出列,下一個人繼續從1報數, 直到最後剩下一個孩子為止。問剩下第幾個孩子。
/* 報數遊戲 有n個孩子站成一圈,從第一個孩子開始順時針方向報數,報到3的人出列,下一個人繼續從1報數, 直到最後剩下一個孩子為止。問剩下第幾個孩子。下面的程式以10個孩子為例,模擬了這個過程,
有N個學生,每個學生的資料包括學號、姓名、3門課的成績,從鍵盤輸入N個學生的資料,要求打印出3門課的總平均成績,以及最高分的學生的資料(包括學號、姓名、3門課成績)
import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Sca
C語言,有N個硬幣面值為a[1]...a[N],給一個非負數m,用這些硬幣湊成m,求有多少種方法?
#include <stdio.h> #include <memory.h> #define N 1000 #define M 100000 int a[N]; int DP[M]; int dpItUnlimited(int m, i
ACMNO.9求Sn=a+aa+aaa+…+aa…aaa(有n個a)之值,其中a是一個數字。 例如:2+22+222+2222+22222(n=5),n由鍵盤輸入。 輸入 n 輸出 a=2 時
題目描述 求Sn=a+aa+aaa+…+aa…aaa(有n個a)之值,其中a是一個數字。 例如:2+22+222+2222+22222(n=5),n由鍵盤輸入。 輸入 n 輸出 a=2 時的Sn 樣例輸入 5 樣例輸出 24690 來源/
Bellman-Ford算法——為什麽要循環V-1次?圖有n個點,又不能有回路,所以最短路徑最多n-1邊。又因為每次循環,至少relax一邊所以最多n-1次就行了!
bold source 頂點 路由 偽代碼 font 端點 -a 自底向上 單源最短路徑 給定一個圖,和一個源頂點src,找到從src到其它所有所有頂點的最短路徑,圖中可能含有負權值的邊。 Dijksra的算法是一個貪婪算法,時間復雜度是O(VLogV)(使用最小堆)。但是
(動態規劃)有 n 個學生站成一排,每個學生有一個能力值,從這 n 個學生中按照順序選取kk 名學生,要求相鄰兩個學生的位置編號的差不超過 d,使得這 kk 個學生的能力值的乘積最大,返回最大的乘積
第2關:最強戰隊 挑戰任務 綠盟和各大名企合作,舉辦程式設計能力大賽,需要選拔一支參賽隊伍。隊伍成員全部來自“綠盟杯”中表現優秀的同學,每個同學都根據在比賽中的表現被賦予了一個能力值。現在被召集的N個同學已經集結完畢,他們按照編號依次站成了一排。 你需要編寫一個程式,從
給定一個二維平面,平面上有 n 個點,求最多有多少個點在同一條直線上。
需求:給定一個二維平面,平面上有 n 個點,求最多有多少個點在同一條直線上。 分析思路: 1、將所有點二維座標化,即定義出所有點的x,y座標值 2、遍歷出所有取出兩點的情況(不考慮先後順序),根據任意兩點都確定一條直線,直線引數為k斜率,b與y軸交點的縱座標(此時x=0),將他們放入一個
ACMNO.44 C語言-平均分 有N個學生,每個學生的資料包括學號、姓名、3門課的成績,從鍵盤輸入N個學生的資料,要求打印出3門課的總平均成績,以及最高分的學生的資料(包括學號、姓名、3門課成績)
題目描述 有N個學生,每個學生的資料包括學號、姓名、3門課的成績, 從鍵盤輸入N個學生的資料, 要求打印出3門課的總平均成績,以及最高分的學生的資料 (包括學號、姓名、3門課成績) 輸入 學生數量N佔一行每個學生的學號、姓名、三科成績佔一行,空格分開。 輸出 各門
有 n 個無序整數,則找出其中最大的 M 個數字所需要的最小時間複雜度:
有 n 個無序整數( n>10000), 則找出其中最大的 M 個數字(5< M<10), 所需要的最小時間複雜度: 看了很多部落格和論壇,這道題我找到了兩種方法,在這裡總結一下。 兩種方法都用到了堆排序,那麼首先回顧一下堆排序:
(指向結構體陣列的指標)有n個結構體變數,內含學生學號,姓名和3門課的成績。要求輸出平均成績最高的學生的資訊
#include<stdio.h> #define N 3 struct Student { int num; char name[20]; float score[3]; fl
(用指標方法處理)有n個整數,使前面各數順序向後移m個位置,最後m個數變成最前面m個數。編寫一個函式實現上述功能,在主函式中輸入n個整數,並輸出調整後的n個數
第一種方法:指標法 #include<stdio.h> #include<stdlib.h> int w(int *d,int e,int g) { int i,j,t; int *r; j=0; for(i=
有n個整數,使前面各數順序向後移m個位置,最後m個數變成前面m個數。寫一函式:實現以上功能,在主函式中輸入n個數和輸出調整後的n個數。
import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scann
一個頁面有多個script標籤時,執行順序
JavaScript直譯器在執行指令碼時,是按塊執行的。通俗地說,就是瀏覽器在解析HTML文件流時,如果遇到一個script標籤,則JavaScript直譯器會等到這個程式碼塊都載入完成後,先對程式碼塊進行預編譯,然後再執行。執行完畢後,瀏覽器會繼續解析下面的HTML文件流,同時JavaSc
有n個整數,指定位置m處插入g個值(用指標和函式)
#include <stdio.h> void main() { void move(int *p,int *s,int n,int m,int g); int a[30],b[20]; i
Problem C: 指標:有n個整數,使其前面各數順序向後移m個位置,最後m個數變成最前面m個數
#include<stdio.h> int move(int *x,int n,int m) { int t[255]; int i; //int *p;指標迴圈變數p for(i=0;i<n;i++) t[i]=x[i];
有N個學生資訊(包括學號、姓名、成績),按照成績的高低順序輸出各學生的資訊
有N個學生資訊(包括學號、姓名、成績),按照成績的高低順序輸出各學生的資訊 /*用結構體陣列存放學生資訊,採用冒泡法進行排序/ #include<stdio.h> struct student //宣告結構體型別 { int num; char name[20]; fl
[Al]演算法:有n級階梯,每次走1步或2步,最多有多少種走法
@Filename : floor.c * @Author : Mr.Zhong * @Date : 2018-11-02 * @Description: n級階梯,每次走一步或2步,最多有多少種走法 * @Analysis :
有n個帶編號的人和n個帶編號的座位,求每個人都不坐在相同號碼座位的方案數目
題目描述: 有 n 位同學編號分別為1, 2, ..., n; 有 n 個座位編號分別為1, 2, ..., n。 現在為每一位同學安排一個座位,求每個同學都坐在與自己編號不同的座位的方案數目。 分析:動態規劃思想: 假設 i 位同學,i 個座