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

C++の最大要素としてkを使用した重複しないサブ配列の長さの最大合計


この問題では、配列と整数kが与えられます。私たちのタスクは、c++の最大要素としてkを使用して重複しないサブ配列の長さの最大合計を見つけるプログラムを作成することです。

問題の説明 −ここでは、配列と整数kがあります。この配列から作成できる、重複しない可能性のあるすべてのサブ配列を見つける必要があります。そして、作成されたすべてのサブアレイの長さを合計します。

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

入力 −配列={3、7、1、2、3、1、6、3、2、5} k =3

出力 − 7

説明 −最大要素3の重複しないサブアレイ:

{3} : length = 1
{1, 2, 3, 1} : length = 4
{3, 2} : length = 2
Sum of length = 1+4+2 = 7

この問題を解決するために、配列をトラバースして、より短いすべての要素を見つけ、長さを維持します。サブ配列(要素のストリーム)にkがある場合は、長さを合計に加算します。

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

#include <iostream>
using namespace std;
int subArrayLengthSum(int arr[], int n, int k){
   int lengthSum = 0;
   int subarrayLength = 0;
   int flag = 0;
   for (int i = 0; i < n;) {
      subarrayLength = 0;
      flag = 0;
      while (arr[i] <= k && i < n) {
         subarrayLength++;
         if (arr[i] == k)
            flag = 1;
         i++;
      }
      if (flag == 1)
      lengthSum += subarrayLength;
      while (arr[i] > k && i < n)
      i++;
   }
   return lengthSum;
}
int main(){
   int arr[] = {3, 7, 1, 2, 3, 1, 6, 3, 2, 5};
   int size = sizeof(arr) / sizeof(arr[0]);
   int k = 3;
   int ans = subArrayLengthSum(arr, size, k);
   cout<<"The max sum of lengths of non-overlapping subarrays with "<<k<<" as max element is "<<ans;
   return 0;
}

出力

The max sum of lengths of non-overlapping subarrays with 3 as max element is 7

  1. C++でのサイズKのM個の重複しないサブ配列の最大合計

    問題の説明 配列と2つの数値MおよびKが与えられます。配列内で、サイズK(重複しない)の最大M個のサブ配列の合計を見つける必要があります。 (配列の順序は変更されません)。 Kはサブアレイのサイズ、Mはサブアレイの数です。配列のサイズはm*kより大きいと想定できます。配列の合計サイズがkの倍数でない場合は、最後の配列の一部を取得できます。 例 指定された配列が={2、10、7、18、5、33、0}の場合。 N =7、M =3、K =1の場合、サブセットは-であるため、出力は61になります。 {33, 18, 10} アルゴリズム presum配列を作成します。これには、指定された配列の

  2. C ++を使用して、マトリックス内の合計が最大の列を検索します。

    サイズがMxNの行列があるとします。合計が最大の列を見つける必要があります。このプログラムでは、トリッキーなアプローチには従わず、配列を列ごとにトラバースし、各列の合計を取得します。合計が最大の場合は、合計と列インデックスを出力します。 例 #include<iostream> #define M 5 #define N 5 using namespace std; int colSum(int colIndex, int mat[M][N]){    int sum = 0;    for(int i = 0; i<M; i++){