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

C++で増加するサブシーケンスの最大積


このチュートリアルでは、増加するサブシーケンスの最大積を見つけるプログラムについて説明します。

このために、整数の配列が提供されます。私たちのタスクは、任意の数の要素を持つ配列の任意のサブシーケンスの最大積を見つけることです。

#include <bits/stdc++.h>
#define ll long long int
using namespace std;
//returning maximum product
ll lis(ll arr[], ll n) {
   ll mpis[n];
   //initiating values
   for (int i = 0; i < n; i++)
      mpis[i] = arr[i];
   for (int i = 1; i < n; i++)
      for (int j = 0; j < i; j++)
         if (arr[i] > arr[j] && mpis[i] < (mpis[j] * arr[i]))
            mpis[i] = mpis[j] * arr[i];
            return *max_element(mpis, mpis + n);
}
int main() {
   ll arr[] = { 3, 100, 4, 5, 150, 6 };
   ll n = sizeof(arr) / sizeof(arr[0]);
   printf("%lld", lis(arr, n));
   return 0;
}

出力

45000

  1. C++での単語の長さの最大積

    wordsという文字列配列があるとします。length(word [i])* length(word [j])の最大値を見つけます。ここで、2つの単語は共通の文字を共有しません。各単語には小文字のみが含まれると想定できます。そのような2つの単語が存在しない場合は、0を返します。したがって、入力が[“ abcw”、“ baz”、“ foo”、“ bar”、“ xtfn”、“ abcdef”]の場合、出力は16になります。 2つの単語は「abcw」、「xtfn」の場合があります。 これを解決するには、次の手順に従います- getRev()というメソッドを定義します。これはxを入力として受け

  2. C++で最も長く増加するサブシーケンスの数

    ソートされていない整数の配列が1つあるとします。最長増加部分列の数を見つける必要があるため、入力が[1、3、5、4、7]の場合、増加部分列は[1,3,5,7]であり、出力は2になります。 [1、3、4、7] これを解決するには、次の手順に従います- n:=num配列のサイズ、サイズnの2つの配列lenとcntを作成し、それらに値1を入力します。 lis:=1 1からnの範囲のiの場合 0からi–1の範囲のjの場合 nums [j]の場合、 len [i]の場合、len [i]:=len [j] + 1、およびcnt [i]:=cnt [j] それ以外の場合、len [j] +