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

C ++で特定の操作を実行した後の、配列内の同数の最大数


整数の配列が与えられます。目標は、特定の操作を実行した後に等しい配列内の最大数を見つけることです-

  • i!=jおよび

    となるように2つの要素a[i]およびa[j]を選択します
  • a[i]をインクリメントしてa[j]をデクリメントします(a [i] ++、a [j]-)

配列の合計を取り、それを要素の数で割ります。 Nが配列のサイズの場合

合計がNで割り切れる場合、等しい数もNになります。そうでない場合、等しい数はN-1になります。

入力

Arr[]= { 1,2,3 }

出力

Maximum count of equal numbers : 3

説明 −最初のステップの後Arr [] ={2,2,2}インクリメント1およびデクリメント3要素の合計は1+2 + 3 =6、6%3 ==0であるため、等しい数=3

入力

Arr[]= { 1,2,4 }

出力

Maximum count of equal numbers : 2

説明 −最初のステップの後、Arr [] ={1,3,3}は2をインクリメントし、4をデクリメントします。要素の合計は1 + 2 + 4 =7、7%3 ==1であるため、等しい数=3-1 =2

以下のプログラムで使用されているアプローチは次のとおりです

  • 整数配列Arr[]は、整数を格納するために使用されます。

  • 整数の「サイズ」は、配列の長さを格納します。

  • 関数maxEqual(int arr []、int n)は、配列とそのサイズを入力として受け取り、特定の操作を適用した後、配列に存在する等しい数の最大数を返します。

  • まず、配列要素の合計を計算し、「合計」に格納します

  • 次に、合計のサイズnによる除算性を確認します(sum%n ==0)。

  • 除算可能な場合はnを返します

  • それ以外の場合は、結果としてn-1を返します。

#include <bits/stdc++.h>
using namespace std;
int maxEqual(int arr[], int n){
   int sum = 0;
   for (int i = 0; i < n; i++){
      sum += arr[i];
   }
   if (sum%n==0){
      return n;
   }
   return n-1;
}
int main(){
   int Arr[] = { 1, 4, 1, 2};
   // size of an array
   int size =4;
   cout <<" Maximum count of equal numbers :"<< maxEqual(Arr,size);
   return 0;
}

出力

Maximum count of equal numbers: 4

  1. C++の配列内の2つの数値の最大XOR

    空でない数値の配列a0、a1、a2、…、an-1があるとします。ここで、0≤ai<231です。aiの最大の結果を見つける必要があります。 XOR aj、ここで0≤i、j

  2. C++で指定された数まで配列要素を最大化します

    問題の説明 整数、数値、および最大値の配列が与えられた場合、タスクは配列要素から取得できる最大値を計算することです。最初からトラバースする配列のすべての値は、前のインデックスから取得した結果に加算または減算して、任意の時点で結果が0以上、指定された最大値以下になるようにすることができます。インデックス0の場合、指定された数に等しい前の結果を取得します。可能な回答がない場合は-1を印刷します。 arr [] ={3、10、6、4、5}、数値=1、最大値=15の場合、加算と減算の順序に従うと、出力は9になります- 1 + 3 + 10 – 6 – 4 + 5 アルゴリズ