python優化演算法 python 優化演算法

2021-10-22 12:06:48 字數 875 閱讀 1371

設k(k,n)是從金鑰k開始的長度為n的唯一數的個數.然後,k(k,n 1)= sum(k(i,n)),其中i在可以從鍵k跳轉到的鍵的範圍內.

這可以使用動態程式設計有效地計算;這是一種占用o(n)時間和o(1)空間的方法:

jumpmap = [map(int, x) for x in '46,68,79,48,039,,017,26,13,24'.split(',')]

def jumps(n):

k = [1] * 10

for _ in xrange(n):

k = [sum(k[j] for j in jumpmap[i]) for i in xrange(10)]

return sum(k)

for i in xrange(10):

print i, jumps(i)

更快:可以在log(n)時間和o(1)空間中計算答案.設m是10乘10矩陣,如果可以從i跳到j,則m [i,j] = 1,否則為0.然後求和(m ^ n * ones(10,1))就是答案.可以通過在log(n)時間中求平方來使用取冪來計算矩陣功率.這是使用numpy的一些**:

jumpmap = [map(int, x) for x in '46,68,79,48,039,,017,26,13,24'.split(',')]

m = numpy.matrix([[1 if j in jumpmap[i] else 0 for j in xrange(10)] for i in xrange(10)])

def jumps_mat(n):

return sum(m ** n * numpy.ones((10, 1)))[0,0]

for i in xrange(10):

print i, jumps_mat(i)

python實現演算法 kmp演算法python實現

kmp演算法python實現 kmp演算法 kmp演算法用於字串的模式匹配,也就是找到模式字串在目標字串的第一次出現的位置 比如abababc 那麼bab在其位置1處,bc在其位置5處 我們首先想到的最簡單的辦法就是蠻力的乙個字元乙個字元的匹配,但那樣的時間複雜度會是o m n kmp演算法保證了時...

python效率怎麼樣 如何優化python的效率

優化python的效率的方法 1 優化演算法時間複雜度 2 減少冗餘資料 3 合理使用copy與deepcopy 4 使用dict或set查詢元素 5 合理使用生成器 generator 和yield。優化方法 1 優化演算法時間複雜度 演算法的時間複雜度對程式的執行效率影響最大,在python中可...

python演算法題 鍊錶反轉詳解 python

鍊錶的反轉是乙個很常見 很基礎的資料結構題,輸入乙個單向鍊錶,輸出逆序反轉後的鍊錶,如圖 上面的鍊錶轉換成下面的鍊錶。實現鍊錶反轉有兩種方式,一種是迴圈迭代,另外一種方式是遞迴。第一種方式 循壞迭代 循壞迭代演算法需要三個臨時變數 pre head next,臨界條件是鍊錶為none或者鍊錶就只有乙...