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

3つの項目を循環的にチェックするC++プログラムは、次の項目が好きかどうか


n個の要素を持つ配列Aがあるとします。地球上にはn個の飛行機があり、それらには1からnまでの番号が付けられています。番号iの平面は平面A[i]が好きです。 A [i]!=i。 3つの平面p、q、rがあるかどうかを確認する必要があります。ここで、pはqが好きで、qはrが好きで、rはpが好きです。

したがって、入力がA =[2、4、5、1、3]の場合、トリプレットは[2、4、1]であるため、出力はTrueになります。

ステップ

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

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

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

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

bool solve(vector<int> A) {
   int n = A.size();
   for (int i = 0; i < n; i++) {
      if (A[A[A[i + 1]]] == i + 1) {
         return true;
      }
   }
   return false;
}
int main() {
   vector<int> A = { 2, 4, 5, 1, 3 };
   cout << solve(A) << endl;
}

入力

{ 2, 4, 5, 1, 3 }

出力

1

  1. C++で3つのポイントが同一線上にあるかどうかをチェックするプログラム

    3つの異なる値のポイントが与えられ、タスクはポイントが同一線上にあるかどうかを確認することです。 ポイントが同じ線上にある場合は同一線上にあると言われ、異なる線上にある場合は同一線上にありません。以下に、同一線上および非同一線上の点の図を示します。 入力 x1 = 1, x2 = 2, x3 = 3, y1 = 1, y2 = 4, y3 = 5 出力 no points are not collinear 入力 x1 = 1, y1 = 1, x2 = 1, y2 = 4, x3 = 1, y3 = 5 出力 points are collinear 以下のプログラム

  2. グラフが強く接続されているかどうかをチェックするC++プログラム

    有向グラフでは、1つのコンポーネントの頂点の各ペアの間にパスがある場合、コンポーネントは強く接続されていると言われます。 このアルゴリズムを解決するには、まず、DFSアルゴリズムを使用して各頂点の終了時間を取得し、次に転置されたグラフの終了時間を検索します。次に、頂点をトポロジカルソートの降順で並べ替えます。 入力 :グラフの隣接行列。 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 出力 :以下は、与え