題目如下:
小明參加了學校的趣味運動會,其中的乙個專案是:跳格仔。
地上畫著一些格仔,每個格仔裡寫乙個字,如下所示:(也可參見p1.jpg)
從我做起振
我做起振興
做起振興中
起振興中華
比賽時,先站在左上角的寫著「從」字的格仔裡,可以橫向或縱向跳到相鄰的格仔裡,但不能跳到對角的格仔或其它位置。一直要跳到「華」字結束。
要求跳過的路線剛好構成「從我做起振興中華」這句話。
請你幫助小明算一算他一共有多少種可能的跳躍路線呢?
我們觀察以下,從最下角的華開始,兩方正好都可以走,一直這樣下去我們全都可以走,那我們可以直接利用遞迴進行解決了
def
f(a, b)
:if a ==
1and b ==1:
return
1elif a <=
0or b <=0:
return
0else
:return f(a-
1, b)
+ f(a, b-1)
print
(f(4,5
))
我們利用函式構建出了乙個二維的陣列,在函式中進行計算。我們必須新增小於零的條件,否則也會導致無限遞迴。
此時的遞迴並不是最優解,我們還可以自己寫出陣列利用同樣的表示式進行動態規劃,自己嘗試一下,**如下:
動態規劃
import numpy as np
x = np.zeros((4
,5))
#構建乙個二維陣列,超過陣列之外的都為0x[0
][0]
=1for i in
range
(len
(x))
:for y in
range
(len
(x[0])
):x[i]
[y]= x[i]
[y]+ x[i-1]
[y]+ x[i]
[y-1
]#在這裡由於第乙個是我們建造好的1,我們需要保留這個1,否則會被抹去
print
(x[-1]
[-1]
)
這裡我們動態規劃與遞迴不同的在於我們動態規劃採用的是自底向上的計算,遞迴則是自上向低計算 藍橋杯 振興中華
小明參加了學校的趣味運動會,其中的乙個專案是 跳格仔。地上畫著一些格仔,每個格仔裡寫乙個字,如下所示 也可參見p1.jpg 從我做起振 我做起振興 做起振興中 起振興中華 比賽時,先站在左上角的寫著 從 字的格仔裡,可以橫向或縱向跳到相鄰的格仔裡,但不能跳到對角的格仔或其它位置。一直要跳到 華 字結...
藍橋杯 振興中華
7.振興中華 問題描述 小明參加了學校的趣味運動會,其中的乙個專案是 跳格仔。地上畫著一些格仔,每個格仔裡寫乙個字,如下所示 也可參見下圖 從我做起振 我做起振興 做起振興中 起振興中華 比賽時,先站在左上角的寫著 從 字的格仔裡,可以橫向或縱向跳到相鄰的格仔裡,但不能跳到對角的格仔或其它位置。一直...
藍橋杯之振興中華
請你幫助小明算一算他一共有多少種可能的跳躍路線呢?分析 本可以使用簡單的深搜的方法,為了避免程式中出現數字,我這裡用1 8分別代表 從我做起振興中華 八個字,然後題目就轉化成走過的路徑構成 12345678 數字串,這樣的好處是我們在當前的路徑節點上,只要向右或者向下檢視下乙個相鄰節點的數字是不是當...