在C ++程序中可以选择除以还是考虑的最大值
在这个问题中,给我们一个数字N。我们的任务是创建一个程序,以选择除法还是考虑C++中的最大值来找到最大值。
问题描述
要找到最大值,我们可以考虑任意两个值,要么按原样取该值,要么通过除以得到最大值。该值可以提取为F(N/2)+F(N/3)+F(N/4)+F(N/5)。
让我们举个例子来了解这个问题,
输入:N=8
输出:9
说明
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
解决方法
这个想法只是简单地多次调用同一个函数以获得除法值。为此,我们使用了动态编程的概念,并创建了一个数组来求解从0到N的F(i)值,以便将其重新用于查找解。
示例
#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; }
输出结果
Maximum value with the choice of either dividing or considering as it is = 9