首頁  >  文章  >  後端開發  >  在 C++ 中重新排列前 N 個數字,使它們處於 K 距離

在 C++ 中重新排列前 N 個數字,使它們處於 K 距離

王林
王林轉載
2023-09-11 15:13:10950瀏覽

在 C++ 中重新排列前 N 个数字,使它们处于 K 距离

給定整數變量,比如說 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中文網其他相關文章!

    陳述:
    本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除