hello-algo/codes/python/chapter_greedy/max_product_cutting.py

34 lines
812 B
Python
Raw Normal View History

"""
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}")