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
广告
数据结构
网络
关系型数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP