C ++で「arr[i]」が「j」の場合、「arr[j]」が「i」になるように配列を再配置します
正の整数型の配列、たとえば、配列内の要素の値が0より大きく、配列のサイズよりも小さい任意のサイズのarr[]が与えられます。タスクは、arr[j]が「j」の場合にarr[j]が「i」になるように配列を再配置し、最終結果を出力することです。
このためのさまざまな入出力シナリオを見てみましょう-
入力 − int arr [] ={3、4、1、2、0}
出力 −配置前の配列:3 4 1 2 0 arr [i]がjの場合にarr[j]がiになるような配列の再配置:4 2 3 0 1
説明 −サイズ6の整数配列と、6未満の配列値のすべての要素が与えられます。次に、配列を再配置します。つまり、arr [1]は4、arr [4]=1です。 arr [2]は1、arr [1] =2; arr [3] is2、arr [2] =3; arr [4]は0、arr [0]=4です。したがって、最終的な配列は4 2 301です。
入力 − int arr [] ={2、0、1、3}
出力 −配置前の配列:2 0 1 3 arr [i]がjの場合にarr[j]がiになるような配列の再配置:1 2 0 3
説明 −サイズ6の整数配列と、6未満の配列値のすべての要素が与えられます。次に、配列を再配置します。つまり、arr [0]は2、arr [2]=0です。 arr [1]は0、arr [0] =1; arr [2] is1、arr [1] =2; arr [3]は3、arr [3] =3です。したがって、最終的な配列は1 203です。
以下のプログラムで使用されているアプローチは次のとおりです
-
整数型要素の配列を入力し、配列のサイズを計算します。
-
配列の前に配列を印刷し、関数Rearrangement(arr、size)を呼び出します
-
関数Rearrangement(arr、size)の内部
-
配列arr[]と同じサイズのptr[]として整数型値の配列を作成します。
-
ループFORを開始し、iから0まで、iがサイズより小さくなるまで。ループ内で、ptr[arr[i]]をiに設定します。
-
iがサイズより小さくなるまでiから0までループFORを開始します。ループ内で、arr[i]をptr[i]に設定します。
-
-
配列の値を再配置した後、配列を出力します。
例
#include <bits/stdc++.h> using namespace std; void Rearrangement(int arr[], int size){ int ptr[size]; for(int i = 0; i < size; i++){ ptr[arr[i]] = i; } for(int i = 0; i < size; i++){ arr[i] = ptr[i]; } } int main(){ //input an array int arr[] = {3, 4, 1, 2, 0}; int size = sizeof(arr) / sizeof(arr[0]); //print the original Array cout<<"Array before Arrangement: "; for (int i = 0; i < size; i++){ cout << arr[i] << " "; } //calling the function to rearrange the array Rearrangement(arr, size); //print the array after rearranging the values cout<<"\nRearrangement of an array such that ‘arr[j]’ becomes ‘i’ if ‘arr[i]’ is ‘j’ is: "; for(int i = 0; i < size; i++){ cout<< arr[i] << " "; } return 0; }
出力
上記のコードを実行すると、次の出力が生成されます
Array before Arrangement: 3 4 1 2 0 Rearrangement of an array such that ‘arr[j]’ becomes ‘i’ if ‘arr[i]’ is ‘j’ is: 4 2 3 0 1
-
C ++でa%b =kとなるような配列内のすべてのペア(a、b)を検索します
配列Aがあるとすると、その配列から、a%b =kとなるようにすべてのペア(a、b)を取得する必要があります。配列がA=[2、3、4、5、7]、k =3であるとすると、ペアは(7、4)、(3、4)、(3、5)、(3、7)になります。 これを解決するために、リストをトラバースして、指定された条件が満たされているかどうかを確認します。 例 #include <iostream> using namespace std; bool displayPairs(int arr[], int n, int k) { bool pairAvilable = true;
-
C ++のアレイディケイとは何ですか?
アレイのタイプと次元の喪失は、アレイの減衰として知られています。これは、ポインタまたは値によって配列を関数に渡すときに発生します。最初のアドレスは、ポインタである配列に送信されます。そのため、配列のサイズは元のサイズではありません。 これは、C++言語での配列減衰の例です 例 #include<iostream> using namespace std; void DisplayValue(int *p) { cout << "New size of array by passing the value : "; &nbs