給定整數變量,比如說 N 和 K。任務是先計算 N 的排列,然後重新排列排列,使其與每個元素的距離為 K。
讓我們來看看各種輸入輸出場景-輸入- int n = 20, int k = 2
輸出
strong>− 重新排列前N 個數字,使其處於K 距離:3 4 1 2 7 8 5 6 11 12 9 10 15 16 13 14 19 20 17 18。解釋
說明 strong>− 我們給出整數變數 '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
輸入− int n = 10, int k = 3
輸入p> 輸出- 重新排列前N 個數字以使它們處於K 距離:不可能 解釋 - 我們給出了整數變數'N' 即10,'K' 即3。現在我們將計算 'N' 的排列,即 1, 2, 3, 4, 5, 6, 7, 8, 9, 10。現在,我們將排列元素以這樣的方式,所有元素都與每個元素相距“k”距離,但對於給定的輸入值是不可能的。 輸入一個整數型元素,即'N'和'K'。 呼叫函數Rearrangement(int n, int k) 透過將 N 和 K 作為參數傳遞給函數。 函數內部Rearrangement(int n, int k) #宣告一個整數變數為temp 並設定為n % (2 * k )。 宣告一個整數陣列為大小為 n 的 ptr 1 即 prt[n 1]。 檢查IF k = 0 然後開始從i 到1 循環FOR 直到i 小於size 並將i 增加1 並列印i . 檢查IF temp 不等於0,然後列印NOT POSSIBLE。 開始從i 到1 的FOR 循環,直到i 小於 開始從i 到1 的FOR 循環,直到i 小於n,並將i 設定為i 2 * k。在迴圈內部,啟動另一個迴圈 FOR 從 j 到 1,直到 j 小於 k 並將 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
以上是在 C++ 中重新排列前 N 個數字,使它們處於 K 距離的詳細內容。更多資訊請關注PHP中文網其他相關文章!