Add the section of max product cutting problem. (#642)

This commit is contained in:
Yudong Jin
2023-07-21 21:56:14 +08:00
committed by GitHub
parent ca5bde2b6c
commit 075c3abf88
10 changed files with 263 additions and 0 deletions

View File

@ -0,0 +1,33 @@
"""
File: max_product_cutting.py
Created Time: 2023-07-21
Author: Krahets (krahets@163.com)
"""
import math
def max_product_cutting(n: int) -> int:
"""最大切分乘积:贪心"""
# 当 n <= 3 时,必须切分出一个 1
if n <= 3:
return 1 * (n - 1)
# 贪心地切分出 3 a 为 3 的个数b 为余数
a, b = n // 3, n % 3
if b == 1:
# 当余数为 1 时,将一对 1 * 3 转化为 2 * 2
return int(math.pow(3, a - 1)) * 2 * 2
if b == 2:
# 当余数为 2 时,不做处理
return int(math.pow(3, a)) * 2
# 当余数为 0 时,不做处理
return int(math.pow(3, a))
"""Driver Code"""
if __name__ == "__main__":
n = 58
# 贪心算法
res = max_product_cutting(n)
print(f"最大切分乘积为 {res}")