Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Susun semula nombor N pertama supaya jaraknya K dalam C++

Susun semula nombor N pertama supaya jaraknya K dalam C++

王林
王林ke hadapan
2023-09-11 15:13:10987semak imbas

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

Diberi pembolehubah integer, katakan N dan K. Tugasnya adalah untuk terlebih dahulu mengira pilih atur N dan kemudian menyusun semula pilih atur supaya ia adalah jarak K dari setiap elemen.

Mari kita lihat pelbagai senario input dan output -

Input- int n = 20, int k = 2

Output

kuat>− Susun semula nombor N pertama supaya berada pada jarak K 4: 2 7 8 5 6 11 12 9 10 15 16 13 14 19 20 17 18.

Penjelasan

Penjelasan strong>− Kami diberi pembolehubah integer 'N' iaitu 20 dan 'K' iaitu 2. Sekarang kita akan mengira pilih atur 'N' iaitu 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18. 19, 20 Sekarang kita Unsur-unsur akan disusun sedemikian rupa sehingga semua elemen berada "k" dari setiap elemen.

Input− int n = 10, int k = 3

Input − int n = 10, int k = 3

Input p>

Susun semula nombor yang pertama Jarak K: Mustahil

Penjelasan - Kami diberi pembolehubah integer 'N' iaitu 10 dan 'K' iaitu 3. Sekarang kita akan mengira pilih atur 'N' iaitu 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Sekarang, kami akan menyusun elemen sedemikian rupa sehingga semua elemen berada dalam jarak "k" dari setiap elemen, tetapi itu tidak mungkin untuk nilai input yang diberikan.

Kaedah yang digunakan dalam atur cara di bawah adalah seperti berikut

  • Masukkan elemen jenis integer, iaitu 'N' dan 'K'.

  • Panggil fungsi Susunan Semula(int n, int k) dengan menghantar N dan K sebagai parameter kepada fungsi.

  • Di dalam fungsi Penyusunan Semula(int n, int k)

    • mengisytiharkan pembolehubah integer sebagai temp dan menetapkannya kepada n % (2 * k).

    • Isytihar tatasusunan integer sebagai ptr 1 saiz n +, iaitu, prt[n+1]. .

    • Mulakan gelung FOR dari i ke 1 sehingga i kurang daripada

    • Mulakan gelung FOR dari i ke 1 sehingga i kurang daripada n dan tetapkan i kepada i + 2 * k. Di dalam gelung, mulakan gelung lain FOR dari j hingga 1 sehingga j kurang daripada k dan tambah j sebanyak 1. Di dalam gelung, kaedah swa dipanggil dengan menghantar ptr[i + j -1] dan ptr[k + i + j - 1] sebagai argumen.

    • Mulakan gelung FOR dari i ke 1 sehingga i kurang daripada N dan tambahkan i sebanyak 1.

    • Cetak prt[i].

    • Cetak hasilnya.
    • Contoh
  • #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;
    }
Output
  • Jika kita menjalankan kod di atas, ia akan menghasilkan output berikut

    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

  • Atas ialah kandungan terperinci Susun semula nombor N pertama supaya jaraknya K dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam