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