Trong bài toán này, chúng ta được đưa ra một số N. Nhiệm vụ của chúng ta là tạo một chương trình tìm đến giá trị Tối đa với sự lựa chọn chia hoặc coi là itis trong C ++.
Mô tả vấn đề
Để tìm giá trị lớn nhất, chúng ta có thể xem xét hai giá trị bất kỳ, bằng cách lấy giá trị như nó vốn có hoặc chúng ta có thể lấy giá trị lớn nhất bằng cách chia. Giá trị có thể được trích xuất dưới dạng F (N / 2) + F (N / 3) + F (N / 4) + F (N / 5) .
Hãy lấy một ví dụ để hiểu vấn đề,
Đầu vào :N =8
Đầu ra :9
Giải thích
F (8) =F (8/2) + F (8/3) + F (8/4) + F (8/5) =F (4) + F (2) + F (2) + F ( 1) =4 + 2 + 2 + 1 =9
Phương pháp tiếp cận giải pháp
Ý tưởng đơn giản là gọi cùng một hàm nhiều lần cho giá trị của phân khu. Đối với điều này, chúng tôi đã sử dụng khái niệm lập trình động và tạo một mảng để giải các giá trị của F (i) từ 0 đến N, để sử dụng lại chúng để tìm giải pháp.
Ví dụ
#include <iostream> using namespace std; int calcMaximumValue(int N) { int F[N + 1]; int divVal = 0; F[0] = 0; F[1] = 1; for (int i = 2; i <= N; i++) { divVal = ( F[i / 2] + F[i / 3] + F[i / 4] + F[i / 5] ); if(divVal > i) F[i] = divVal; else F[i] = i; } return F[N]; } int main() { int N = 8; cout<<"Maximum value with the choice of either dividing or considering as it is = "<<calcMaximumValue(N); return 0; }
Đầu ra
Maximum value with the choice of either dividing or considering as it is = 9