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

C++で正確にk個の奇数を持つ最長のサブ配列を見つけます


n個の要素を持つ1つの配列があるとします。問題は、正確にk個の奇数を持つ最長のサブ配列を見つけることです。したがって、A =[2、3、4、11、4、12、7]、およびk =1の場合、出力は4になり、サブ配列は[4、11、4、12]

になります。

これは、スライディングウィンドウを使用して解決できます。タスクは以下のようなものです-

  • max:=0を初期化し、:=0をカウントし、:=0を開始します
  • 0からn– 1の範囲のiについては、次のようにします
    • arr [i] mod 2が0でない場合は、カウントを1増やします
    • カウント>kで開始<=iのときに、次の手順を実行します
      • arr [start] mod 2が0でない場合は、カウントを1減らします
      • 開始を1増やします
    • count =kの場合、
      • max <(i – start + 1)の場合、max:=(i – start + 1)
    • 最大値を返す

#include<iostream>
using namespace std;
int oddSubarrayMaxLength(int arr[], int n, int k) {
   int max_len = 0, count = 0, start = 0;
   for (int i = 0; i < n; i++) {
      if (arr[i] % 2 != 0)
         count++;
      while (count > k && start <= i)
         if (arr[start++] % 2 != 0)
            count--;
      if (count == k)
      if (max_len < (i - start + 1))
      max_len = i - start + 1;
   }
   return max_len;
}
int main() {
   int arr[] = {2, 3, 4, 11, 4, 12, 7};
   int n = sizeof(arr) / sizeof(arr[0]);
   int k = 1;
   cout << "Maximum Length is: "<< oddSubarrayMaxLength(arr, n, k);
}

出力

Maximum Length is: 4

  1. C++で最大の連続する偶数の数を見つけます

    n個の要素を持つ配列Aがあるとします。与えられた配列内の連続する偶数の最大数を見つける必要があります。したがって、配列がA =[1、2、3、4、6、8、7]のような場合、カウントは3になります。 これは簡単に解決できます。 2つのカウント変数が必要です。1つはmax_currentで、もう1つはmax_till_nowです。偶数が見つかった場合は、max_currentを増やしてから、max_till_nowと比較します。奇数の要素が見つかるたびに、max_countを0にリセットします。 例 #include<iostream> using namespace std; int

  2. n個の数のGCDとLCMを見つけるためのC++プログラム

    これは、n個の数のGCDとLCMを見つけるためのコードです。すべてがゼロではない2つ以上の整数のGCDまたは最大公約数は、各整数を除算する最大の正の整数です。 GCDは最大公約数としても知られています。 2つの数値の最小公倍数(LCM)は、両方の数値の倍数である最小公倍数(ゼロではない)です。 アルゴリズム Begin    Take two numbers as input    Call the function gcd() two find out gcd of n numbers    Call the function l