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

与えられた式がmを返すかどうかを示すように配列を再配置できることを確認するC++プログラム


n個の要素と別の数mの配列Aがあるとします。次のような方法でアレイを再配置できるかどうかを確認する必要があります

$$ \ mathrm {\ sum_ {i =1} ^ {n} \ sum_ {j =1} ^ {n} \ frac {A [j]} {j} =m} $$

A [j]/j操作では丸めは行われません。

したがって、入力がA =[2、5、1]のような場合; m =8の場合、出力はTrueになります。これは、[1、2、5]の配置では、(1/1 + 2/2 + 5/3)+(2/2 + 5/3)+(5 / 3)=8

ステップ

これを解決するには、次の手順に従います-

sum := 0
n := size of A
for initialize i := 0, when i < n, update (increase i by 1), do:
   sum := sum + A[i]
if sum is same as m, then:
   return true
Otherwise
   return false

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;

bool solve(vector<int> A, int m) {
   long sum = 0;
   int n = A.size();
   for (int i = 0; i < n; ++i) {
      sum += A[i];
   }
   if (sum == m)
      return true;
   else
      return false;
}

int main() {
   vector<int> A = { 2, 5, 1 };
   int m = 8;
   cout << solve(A, m) << endl;
}

入力

{ 2, 5, 1 }, 8

出力

1

  1. C++で配列のビットノイズをチェックするプログラム

    N個の整数の配列arr[N]が与えられた場合、タスクは、与えられた配列がバイトニックであるかどうかをチェックすることです。指定されたアレイがバイトニックである場合は、「はい、バイトニックアレイです」と出力します。そうでない場合は、「いいえ、バイトニックアレイではありません」と出力します。 Bitonicアレイとは、アレイが最初に厳密に昇順で、次に厳密に降順である場合です。 この配列のように、arr [] ={1、2、3、4、2、-1、-5}はバイトニック配列です。これは、4までは厳密に昇順であり、4以降は厳密に降順であるためです。 入力 arr[] = {1, 3, 5, 4,

  2. サイズnの指定された配列がnレベルのBSTを表すことができるかどうかをC++で確認してください

    配列Aがあり、配列がnレベルのBSTを表すことができるかどうかを確認する必要があります。レベルがであるため、次のようにツリーを構築できます。数値をkとすると、kより大きい値は右側に移動し、kより小さい値は左側に移動します。 {50、20、9、25、10}と{50、30、20、25、10}の2つのリストがあるとします。 最初のものは無効ですが、2番目のものは有効です。 これを確認するには、BSTを作成して高さを確認するか、配列ベースのアプローチを使用します。アレイベースのアプローチは以下のようなものです- 2つの変数max=infinityを使用して、左側のサブツリーの最大制限をマー