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

| arr [0] – arr [1]-+ | arr [1] –arr[2]-+…+|arr [n – 2] – arr [n –1]の最大値-要素が1からC++のn


この問題では、範囲[1、n]のn個の整数の配列が与えられます。私たちのタスクは、| arr [0] – arr [1]-+ | arr [1] –arr[2]-+…+|arr [n – 2] –arr[の最大値を見つけるプログラムを作成することです。 n –1]。

問題を理解するために例を見てみましょう

入力 −配列={1、2、3}

出力 − 3

説明

max sum is
|1-3|+|2-1| = 3

この問題を解決するための簡単なアプローチは、配列からすべての順列を作成することです。そして、順列からすべての値の最大値を見つけます。より効果的な方法は、nの各値のすべての最大値を一般化してから、一般式を作成することです。

だから、

Maximum sum for (n = 1) = 0
Maximum sum for (n = 2) = 1
Maximum sum for (n = 3) = 3
Maximum sum for (n = 4) = 7
Maximum sum for (n = 5) = 11
So, the maximum value is 0, 1, 3, 7, 11…

一般式は、((n * n / 2)-1)です。

ソリューションの動作を説明するプログラム

#include <iostream>
using namespace std;
int maxAbsVal(int n) {
   if (n == 1)
      return 0;
   return ((n*n/2) - 1);
}
int main() {
   int n = 4;
   cout<<"The maximum sum of absolute difference is "<<maxAbsVal(n);
   return 0;
}

出力

The maximum sum of absolute difference is 7

  1. C++で2つの要素が隣接しないような循環配列の最大合計

    この問題では、循環配列cirArr[]が与えられます。私たちのタスクは、C++で2つの要素が隣接しないように循環配列の最大合計を見つけるプログラムを作成することです。 問題の説明 循環配列の場合、隣接する要素を取得できないように、配列の要素の最大合計を見つける必要があります。つまり、代替要素を取得する必要があります。 循環アレイ は、配列の最後の要素が最初の要素に接続されている特殊なタイプの配列です。 問題を理解するために例を見てみましょう 入力 cirArr[] = {4, 1, 5, 3, 2} 出力 9 説明 最大合計循環サブシーケンスは[4、5、2]です。合計=9 ソリ

  2. C ++のリテラルとは何ですか?

    リテラルは、ソースコード内の値を表すための表記法です。それらはソースコードに存在するだけで、メモリ内に値を参照することはありません。これを、メモリ内の値を参照する識別子と比較してください。 C++にはいくつかのタイプのリテラルがあります。リテラルの例のいくつかは-です。 「こんにちは」(文字列) 3.141(フロート/ダブル) true(ブール値) 3(整数) 「c」(文字) 文字通りではないもの- bar =0; (声明) 3 * 5-4(式) std ::cin(識別子)