最初のN個の数値を再配置して、C++でKの距離に配置します
整数変数、たとえばNとKが与えられます。タスクは、最初にNの順列を計算し、次にすべての要素からKの距離になるように順列を再配置することです。
このためのさまざまな入出力シナリオを見てみましょう-
入力 − int n =20、int k =2
出力 −最初のN個の数字をK距離に並べ替えると、次のようになります。3 4 1 2 7 8 5 6 11 12 9 10 15 16 13 14 19 20 17 18.
説明 −整数変数「N」、つまり20と「K」、つまり2が与えられます。次に、「N」の順列、つまり1、2、3、4、5、6、7、8、9、10、11を計算します。 、12、13、14、15、16、17、18、19、20。ここで、すべての要素がすべての要素から「k」の距離になるように要素を配置します。
入力 − int n =10、int k =3
出力 −最初のN個の数字をKの距離に再配置することは、次のとおりです。不可能
説明 −整数変数「N」、つまり10と「K」、つまり3が与えられます。次に、「N」の順列、つまり1、2、3、4、5、6、7、8、9、10を計算します。 、すべての要素がすべての要素から「k」の距離にあるように要素を配置しますが、指定された入力値では不可能です。
以下のプログラムで使用されているアプローチは次のとおりです
-
整数型の要素、つまり「N」と「K」を入力します。
-
NとKをパラメーターとして関数に渡すことにより、関数Rearrangement(int n、int k)を呼び出します。
-
関数Rearrangement(int n、int k)の内部
-
整数変数をtempとして宣言し、n%(2 * k)で設定します。
-
整数型配列をサイズn+1のptr、つまりprt [n+1]として宣言します。
-
IF k =0を確認してから、ループFORをiから1まで開始し、iがサイズより小さくなるまでiを1ずつインクリメントして、iを出力します。
-
tempが0に等しくないかどうかを確認してから、NOTPOSSIBLEと出力します。
-
ループFORをiから1まで開始し、iがN未満になるまで、ptr[i]をiに設定します。
-
ループFORをiから1まで開始し、iがn未満になるまで、iをi + 2*kに設定します。ループ内で、jからjまでk未満になるまで別のループFORを開始し、jを1ずつインクリメントします。ループ内で、ptr [i +j-1]とptr[k+ i+jを渡してswaメソッドを呼び出します。 -1]パラメータとして。
-
iから1までのループFORを開始します。iはN未満であり、iを1ずつインクリメントします。
-
prt[i]を印刷します。
-
-
結果を印刷します。
例
#include <bits/stdc++.h> using namespace std; void Rearrangement(int n, int k){ int temp = n % (2 * k); int ptr[n + 1]; if(k == 0){ for(int i = 1; i <= n; i++){ cout << i << " "; } return; } if(temp != 0){ cout<<"Not Possible"; return; } for(int i = 1; i <= n; i++){ ptr[i] = i; } for(int i = 1; i <= n; i += 2 * k){ for(int j = 1; j <= k; j++){ swap(ptr[i + j - 1], ptr[k + i + j - 1]); } } for(int i = 1; i <= n; i++){ cout << ptr[i] << " "; } } int main(){ int n = 20; int k = 2; cout<<"Rearrangement of first N numbers to make them at K distance is: "; Rearrangement(n, k); return 0; }
出力
上記のコードを実行すると、次の出力が生成されます
Rearrangement of first N numbers to make them at K distance is: 3 4 1 2 7 8 5 6 11 12 9 10 15 16 13 14 19 20 17 18
-
最初のn個の自然数の立方和のC++プログラム?
正の整数1、2、3、4...は自然数として知られています。 このプログラムは、ユーザーから正の整数を受け取り(ユーザーが入力したnを想定)、このプログラムは1 3の値を表示します。 +2 3 +3 3 + .... + n 3 。 Input: n = 3 Output: 36 説明 13+23+33 = 1 +8+27 = 36 このプログラムはuserから正の整数を取り(userがnを入力したと仮定します)、このプログラムは1 3の値を表示します。 +2 3 +3 3 + .... + n 3 。 例 #include <iostream> us
-
最初のn個の自然数の二乗和のためのC++プログラム?
この問題では、最初のn個の自然数の2乗の合計を取得する方法を確認します。ここでは、1からnまで実行されるforループを使用しています。各ステップで、項の2乗を計算し、それを合計に追加します。このプログラムは、完了するまでにO(n)時間かかります。しかし、これをO(1)または一定時間で解きたい場合は、この級数式-を使用できます。 アルゴリズム squareNNatural(n) begin sum := 0 for i in range 1 to n, do sum := sum + i^2 &