C++の2つのアレイ間の互換性の違いを見つける
2人の友人がいて、今彼らは彼らの結合をテストしたいと考えています。だから彼らは彼らがどれだけ互換性があるかをチェックします。 1..nから番号が付けられた番号nが与えられます。そして、彼らは数字をランク付けするように求められます。彼らはそれらの間の互換性の違いを見つけなければなりません。互換性の違いは、基本的に、それらによって与えられた同じ映画の相対的なランキングの不一致の数です。したがって、A =[3、1、2、4、5]、およびB =[3、2、4、1、5]の場合、出力は2になります。 2と4ですが、他の人はそれを後にランク付けします。
これを解決するために、現在の要素が同じであるときに両方の配列をトラバースし、その後何もしません。次に、AとBの次の位置を見つけ、位置をjとし、B[j]をB[i]
に1つずつ移動します。例
#include<iostream> using namespace std; int getArrayDiff(int A[], int B[], int n) { int result = 0; for (int i = 0; i < n; i++) { if (A[i] != B[i]) { int j = i + 1; while (A[i] != B[j]) j++; while (j != i) { swap(B[j], B[j - 1]); j--; result++; } } } return result; } int main() { int A[] = { 3, 1, 2, 4, 5 }; int B[] = { 3, 2, 4, 1, 5 }; int n = sizeof(A)/sizeof(A[0]); cout << "Compatibility difference: " << getArrayDiff(A, B, n); }
出力
Compatibility difference: 2
-
C++でソートされていない2つの配列のUnionとIntersectionを検索します
このチュートリアルでは、2つのソートされていない配列の和集合と共通部分のプログラムを作成する方法を学習します。例を見てみましょう。 入力 arr_one = [1, 2, 3, 4, 5] arr_two = [3, 4, 5, 6, 7] 出力 union: 1 2 3 4 5 6 7 intersection: 3 4 5 問題を解決するための手順を見てみましょう。 ユニオン 2つの配列をランダムな値で初期化します。 union_resultという名前の空の配列を作成します。 最初の配列を繰り返し処理し、すべての要素を追加します。 セクション配列を繰り返し
-
C++で2つの異なる良好なノードの任意のペア間の最短距離を見つけます
N個の異なるノードとM個のエッジを持つ特定の重み付き無向グラフがあるとすると、一部のノードは適切なノードです。 2つの異なる良好なノードの任意のペア間の最短距離を見つける必要があります。与えられた図では、次のグラフの黄色は適切なノードと見なされます。 したがって、入力が次のような場合 その場合、出力は11になります。これは、適切なノードのペアとそれらの間の距離が次のとおりであるためです。(1から3)距離は11、(3から5)距離は13、(1から5)距離は24、そのうち11が最小です。 これを解決するには、次の手順に従います- N:=100005 MAX_VAL:=999