하나의 정수 N> 0이 있다고 가정합니다. 작업은 N보다 작거나 같은 숫자 중에서 숫자의 최대 곱을 찾는 것입니다. N이 390이면 결과는 다음과 같습니다. 216, 389는 최대 곱이 3 * 8 * 9 =216이므로
이 문제를 해결하기 위해 재귀적 접근 방식을 사용합니다. 따라서 N =0이면 1을 반환하고 숫자 N <10이면 N을 반환하고 그렇지 않으면 max(max_product(N/10) * (N mod 10), max_product((N/10) - 1)*9를 반환합니다. )
예시
#include<iostream> using namespace std; int max_product(int N) { if (N == 0) return 1; if (N < 10) return N; return max(max_product(N / 10) * (N % 10), max_product(N / 10 - 1) * 9); } int main() { int N = 432; cout << "Maximum product is: " << max_product(N); }
출력
Maximum product is: 243