我想為Minesweepers/Cheess創建N維棋盤,當我使用DP來提高速度時,我遇到了一個問題,但是,兩個版本的速度看起來是一樣的。
版本1:天真遞回
def createboard_nd(dimensions, value=None) 。
if len(dimensions) == 1:
return [value for _ in range(dimensions[0]) ]
else:
return [createboard_nd( dimensions[1: ], value) for _ in range(dimensions[0]) ]
第2版:用DP進行遞回
def createboard_nd(dimensions, value=None, memo=None)。)
if memo is None:
memo = {}
if len(dimensions) in memo:
return memo[len(dimensions)]
if len(dimensions) == 1:
memo[len(dimensions)] = [value for _ in range(dimensions[0] ] ]
return memo[len(dimensions)]
else:
memo[len(dimensions)] = [createboard_nd(dimensions[1: ],value, memo) for _ in range(dimensions[0])]
return memo[len(dimensions)]
示例
createboard_nd((10,10, 10,10,10, 1)
uj5u.com熱心網友回復:
似乎jupyternotebook內置的時間計數有bug或其他東西,運行腳本后,第2版似乎快得多。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/319315.html
標籤:
