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

更新於: 2020年10月9日

172 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.