Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาผลคูณสูงสุดของตัวเลขระหว่างตัวเลขที่น้อยกว่าหรือเท่ากับ N ใน C++


สมมุติว่าเรามีจำนวนเต็ม 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