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

再エンゲージメントをチェックするC++コードは、要素の合計が最大でxになるように実行できます。


サイズnの2つの配列AとB、および別の数xがあるとします。 0からn-1の範囲のすべてのiについて、A [i] + B [1] <=xとなるように、Bの要素を再配置できるかどうかを確認する必要があります。

したがって、入力がA =[1、2、3]のような場合。 B =[1、1、2]; x =4の場合、出力はTrueになります。これは、[1、2、1]のようにBを配置した場合、合計値は1 + 1 <=4、2 + 2 <=4、および3 + 1<=4になるためです。 。

ステップ

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

n := size of A
ans := 1
sum := 0
for initialize i := 0, when i < n, update (increase i by 1), do:
   sum := A[i] + B[n - i - 1]
   if sum > x, then:
      ans := 0
if ans is non-zero, then:
   return true
Otherwise
   return false

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

#include <bits/stdc++.h>
using namespace std;
bool solve(vector<int> A, vector<int> B, int x){
   int n = A.size();
   int ans = 1;
   int sum = 0;
   for (int i = 0; i < n; ++i){
      sum = A[i] + B[n - i - 1];
      if (sum > x)
      ans = 0;
   }
   if (ans)
      return true;
   else
      return false;
}
int main(){
   vector<int> A = { 1, 2, 3 };
   vector<int> B = { 1, 1, 2 };
   int x = 4;
   cout << solve(A, B, x) << endl;
}

入力

{ 1, 2, 3 }, { 1, 1, 2 }, 4

出力

1

  1. 数値がC++で2つの三角数の合計として表現できるかどうかを確認します

    このセクションでは、1つの数を2つの三角数の合計として表現できるかどうかを確認します。三角数は以下のようになります- 例から、1、3、6、10はいくつかの三角数であることがわかります。数N(たとえば16)を2つの三角数(6、10)の合計として表す必要があります。 アプローチは非常に簡単です。 N未満のすべての三角数を取得する必要があります。これらの値からセットを作成します。ここで、集合からXと言う数を取り、N – Xが集合に存在するかどうかを確認する必要があります。そうすると、Xは2つの三角数の合計として表すことができます。 例 #include <iostream> #

  2. 数値がC++で連続する数値の合計として表現できるかどうかを確認します

    ここでは、1つの数値を2つ以上の連続した数値の合計として表すことができるかどうかを確認します。数値が12であるとします。これは3+4+5として表すことができます。 この問題を解決するための直接的で最も簡単な方法があります。数値が2の累乗である場合、いくつかの連続した数値の合計として表すことはできません。留意しなければならない2つの事実があります。 2つの連続する数値の合計が奇数の場合、そのうちの1つは奇数になり、もう1つは偶数になります。 2番目の事実は2n =2 (n-1) + 2 (n-1) 。 例 #include <iostream> using namespac