Trong hướng dẫn này, thảo luận chương trình tìm giá trị tối đa với lựa chọn chia số thành bốn phần đệ quy hoặc giữ nguyên theo hàm F(n) = max((F(n/2) + F(n/3) + F(n/4) + F(n/5)), n).
Ví dụ
#include <bits/stdc++.h>
using namespace std;
int findMaximum(int size) {
int term[size + 1];
term[0] = 0;
term[1] = 1;
int i = 2;
while (i <= size) {
term[i] = max(i, (term[i / 2] + term[i / 3] + term[i / 4] + term[i / 5]));
i = i + 1;
}
return term[size];
}
int main() {
int number = 37;
cout << "Tổng lớn nhất có thể: " << findMaximum(number) << endl;
return 0;
}
Đầu ra
Tổng lớn nhất có thể: 57