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

偵察ユニットを形成する方法を数えるC++コード


n個の要素を持つ配列Aと、別の数dがあるとします。ドリームランド軍の規則によると、偵察部隊には正確に2人の兵士が必要です。これらの2人の兵士はそれほど異ならないはずなので、彼らの身長は最大でdセンチメートル異なる可能性があります。配列Aに高さが格納されている兵士がn人います。同じ高さの兵士もいます。これらのn人の兵士から偵察ユニットを形成する方法がいくつあるかを見つける必要があります。

したがって、入力がA =[10、20、50、60、65]のような場合。 d =10の場合、出力は6になります。これは、(10、20)、(20、10)、(50、60)、(60、50)、(60、65)、(65、60)が可能であるためです。単位。

ステップ

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

ans := 0
for initialize i := 1, when i < size of A, update (increase i by 1), do:
   for initialize j := 0, when j < i, update (increase j by 1), do:
      if |A[i] - A[j]| <= d, then:
         (increase ans by 1)
      return ans * 2

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

#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A, int d){
   int ans = 0;
   for (int i = 1; i < A.size(); i++)
      for (int j = 0; j < i; j++)
         if (abs(A[i] - A[j]) <= d)
            ans++;
   return ans * 2;
}
int main(){
   vector<int> A = { 10, 20, 50, 60, 65 };
   int d = 10;
   cout << solve(A, d) << endl;
}

入力

{ 10, 20, 50, 60, 65 }, 10

出力

6

  1. ロボットが最終位置に到達するまでのステップをカウントする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| 例 理解を深めるために、次の実装

  2. C++の平面内の平行四辺形の数

    平行四辺形を形成する点を含む平面が与えられます。タスクは、与えられた点を使用して形成できる平行四辺形の数を計算することです。平行四辺形では、四辺形の反対側は平行であるため、反対の角度は等しくなります。 入力 − int a[] = {0, 2, 5, 5, 2, 5, 2, 5, 2} Int b[] = {0, 0, 1, 4, 3, 8, 7, 11, 10} 出力 −平面内の平行四辺形の数− 3 説明 −(x、y)点が与えられ、これらの点を使用して、図に示すように3つの平行四辺形のカウントを形成できます。 入力 − a[] = {0, 3, 1, 4, 1, 5} b