C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++プログラムの場合と同様に、除算または考慮のいずれかを選択した場合の最大値


この問題では、数値Nが与えられます。私たちのタスクは、C ++で分割するか、炎と見なすかを選択して、最大値を見つけるプログラムを作成することです。

問題の説明

最大値を見つけるには、値をそのまま取得するか、除算して最大値を取得することで、任意の2つの値を考慮することができます。値は、 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

  1. Xとの絶対差がC++で最大値を与えるノードを見つけます

    ツリーがあり、すべてのノードの重みと整数xがあるとします。 | weight [i]--x|となるようなノードiを見つける必要があります。最小です。グラフが以下のようで、x =15 出力は3になります。ノードごとに次のようになります ノード1、| 5 – 15 | =10 ノード2、| 10 – 15 | =5 ノード3、| 11 – 15 | =4 ノード4、| 8 – 15 | =7 ノード5、| 6 – 15 | =9 アイデアは単純です。ツリーでDFSを実行し、ノードの追跡を行います。ノードのxとの重み付き絶対差が最小値を示します 例 #include

  2. sin(x)およびcos(x)の値を計算するC++プログラム

    入力を角度として指定すると、指定した角度に対応するsin(x)とcos(x)の値を計算し、結果を表示することがタスクになります。 Sin(x)の場合 Sin(x)は、x角度の値を計算するために使用される三角関数です。 式 $$ \ sin(x)=\ displaystyle \ sum \ Limits_ {k =0} ^ \ infty \ frac {(-1)^ {k}} {(2k + 1)!} x ^ {2k + 1} $ $ Cos(x)の場合 Cos(x)は、x角度の値を計算するために使用される三角関数です。 式 $$ \ cos(x)=\ displays