python鏁存暟鎷嗗垎闂濡備綍瑙e喅
瑕佽В鍐硃ython鏁存暟鎷嗗垎闂锛屽彲浠ヤ娇鐢ㄥ姩鎬佽鍒掔殑鏂规硶銆?/p>
棣栧厛锛屾垜浠畾涔変竴涓嚱鏁?code>integer_partition(n)锛屽叾涓?code>n琛ㄧず瑕佹媶鍒嗙殑鏁存暟銆傛垜浠彲浠ヤ娇鐢ㄤ竴涓垪琛?code>dp鏉ヤ繚瀛樿绠楃粨鏋滐紝dp[i]
琛ㄧず褰撴媶鍒嗙殑鏁存暟涓?code>i鏃剁殑鎷嗗垎鏂规鏁般€?/p>
鍒濆鏃讹紝灏?code>dp鍒楄〃鐨勬墍鏈夊厓绱犲垵濮嬪寲涓?锛?code>dp[0]璁剧疆涓?銆?/p>
鐒跺悗锛屾垜浠紑濮嬩粠灏忓埌澶т緷娆¤绠?code>dp[i]鐨勫€硷紝瀵逛簬姣忎釜i
锛屾垜浠渶瑕侀亶鍘嗘墍鏈夊彲鑳界殑鎷嗗垎鏂瑰紡锛屽皢i
鎷嗗垎涓轰笉鍚岀殑鏁存暟锛屽苟灏嗘媶鍒嗙殑鏁存暟鍒嗗埆璁颁负j
銆?/p>
瀵逛簬姣忎釜j
锛屾垜浠彲浠ュ皢i
鎷嗗垎涓?code>j鍜?code>i-j涓ら儴鍒嗭紝鑰?code>i-j鍙互缁х画鎷嗗垎銆?/p>
鎵€浠ワ紝鎴戜滑鍙互寰楀埌閫掓帹鍏崇郴寮忥細dp[i] = dp[i] + dp[i-j]
銆?/p>
鏈€鍚庯紝杩斿洖dp[n]
浣滀负鏁存暟鎷嗗垎鐨勭粨鏋溿€?/p>
涓嬮潰鏄娇鐢ㄥ姩鎬佽鍒掕В鍐虫暣鏁版媶鍒嗛棶棰樼殑Python浠g爜绀轰緥锛?/p>
def integer_partition(n):
dp = [0] * (n + 1)
dp[0] = 1
for i in range(1, n + 1):
for j in range(1, i + 1):
dp[i] += dp[i - j]
return dp[n]
浣跨敤杩欎釜鍑芥暟锛屼緥濡?code>integer_partition(5)灏嗚繑鍥?code>7锛岃〃绀哄皢鏁存暟5
鎷嗗垎鐨勬柟妗堟暟涓?code>7銆?/p>
相关问答