Giả sử chúng ta có một số n, chúng ta phải tìm hai hoặc nhiều số sao cho tổng của chúng bằng n và tích của các số này là cực đại, chúng ta phải tìm tích.
Vì vậy, nếu đầu vào là n =12, thì đầu ra sẽ là 81, là 3 + 3 + 3 + 3 =12 và 3 * 3 * 3 * 3 =81.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
Định nghĩa một hàm dp (). Điều này sẽ mất n
-
nếu n giống 0 thì
-
trả lại 1
-
-
ans:=0
-
đối với tôi trong phạm vi từ 1 đến n + 1, hãy thực hiện
-
ans:=tối đa ans và (i * dp (n - i))
-
-
trả lại ans
-
Từ phương thức chính, thực hiện như sau -
-
trả về dp (n)
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
class Solution: def solve(self, n): def dp(n): if n == 0: return 1 ans = 0 for i in range(1, n + 1): ans = max(ans, i * dp(n - i)) return ans return dp(n) ob1 = Solution() print(ob1.solve(12))
Đầu vào
12
Đầu ra
81