Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 N보다 작거나 같은 숫자 중 숫자의 최대 곱 찾기


하나의 정수 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