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

โปรแกรม C++ หาผลคูณของหลักสูงสุดในจำนวนที่น้อยกว่าหรือเท่ากับ N


สมมติว่าเรามีจำนวนเต็ม N > 0 งานคือหาผลคูณของหลักสูงสุดในจำนวนที่น้อยกว่าหรือเท่ากับ N ถ้า N คือ 390 ผลลัพธ์คือ 216 เนื่องจากตัวเลข 389 ทำให้ได้ผลคูณสูงสุด 3 * 8 * 9 = 216

เพื่อแก้ปัญหานี้ เราจะใช้แนวคิดเวียนเกิด (recursive) ดังนั้นถ้า N = 0 ให้คืนค่า 1 ถ้าตัวเลข N < 10 ให้คืนค่า N มิฉะนั้นให้คืนค่า max(max_product(N/10) * (N mod 10), max_product((N/10) - 1)*9)

ตัวอย่างโค้ด C++

#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