在 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

更新时间:19-12-2019

357 次浏览

启动 职业生涯

完成课程获得认证

开始
广告