숫자 n이 있다고 가정하고 그 합이 n이 되도록 두 개 이상의 숫자를 찾아야 하고 이 숫자의 곱이 최대화되면 곱을 찾아야 합니다.
따라서 입력이 n =12와 같으면 출력은 3 + 3 + 3 + 3 =12 및 3 * 3 * 3 * 3 =81과 같이 81이 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
dp() 함수를 정의합니다. n
소요됩니다. -
n이 0과 같으면
-
1 반환
-
-
답변 :=0
-
범위 1에서 n + 1까지의 i에 대해 수행
-
ans :=ans의 최대값 및 (i * dp(n − i))
-
-
반환
-
기본 방법에서 다음을 수행하십시오 -
-
리턴 dp(n)
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
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))
입력
12
출력
81