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

パイルカウントをチェックするC++コードは2日目から有効です


同じサイズの2つの配列XとYがあるとします。初日はi番目のインデックスにX[i]個の石があり、2日目にはY[i]個の石があります。初日はたくさんのメンバーが来てくれました。彼らは何もしないか、いくつかの山にいくつかの石を追加するか、ある山から別の山にいくつかの石を交換します。 YがXから有効かどうかを確認する必要があります。

したがって、入力がX =[1、2、3、4、5]のような場合; Y =[2、1、4、3、5]の場合、1つの石を2番目の山から最初の山に、1つの石を4番目の山から3番目の山に移動するため、出力はTrueになります。

ステップ

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

n := size of A
for initialize i := 0, when i < n, update (increase i by 1), do:
   s := s + A[i]
for initialize i := 0, when i < n, update (increase i by 1), do:
   d := d + B[i]
return (if d > s, then false, otherwise true)

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

#include <bits/stdc++.h>
using namespace std;
bool solve(vector<int> A, vector<int> B){
   int n = A.size(), d = 0, s = 0;
   for (int i = 0; i < n; i++)
      s += A[i];
   for (int i = 0; i < n; i++)
      d += B[i];
   return d > s ? false : true;
}
int main(){
   vector<int> X = { 1, 2, 3, 4, 5 };
   vector<int> Y = { 2, 1, 4, 3, 5 };
   cout << solve(X, Y) << endl;
}

入力

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

出力

1

  1. 三角数をチェックするC++コード

    数nがあるとします。三角数かどうかを確認する必要があります。ご存知のように、n個のドット(またはボール)を層状に配置して正三角形を形成できる場合、nは三角数です。 したがって、入力がn =10の場合、出力はTrueになります。 ステップ これを解決するには、次の手順に従います- for initialize i := 1, when i <= n, update (increase i by 1), do:    if i * (i + 1) is same as 2 * n, then:       return true retu

  2. ロボットが最終位置に到達するまでのステップをカウントするC++コード

    2つの座標(x1、y1)と(x2、y2)があるとします。ロボットがポイント(x1、y1)にいて、ポイント(x2、y2)に移動しようとしています。 1つのステップで、ロボットは1つのセルに向かって8つの隣接する座標に移動できます。最終的な位置に到達するために必要な最小限のステップ数を見つける必要があります。 したがって、入力がx1=3のような場合。 y1 =4; x2 =6; y2 =1;の場合、出力は3になります。 ステップ これを解決するには、次の手順に従います- return maximum of |x2 - x1| and |y2 - y1| 例 理解を深めるために、次の実装