Maison  >  Article  >  développement back-end  >  Réorganiser les N premiers nombres afin qu'ils soient distants de K en C++

Réorganiser les N premiers nombres afin qu'ils soient distants de K en C++

王林
王林avant
2023-09-11 15:13:10950parcourir

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

Étant donné des variables entières, disons N et K. La tâche consiste d’abord à calculer les permutations de N, puis à réorganiser les permutations de manière à ce qu’elles soient à une distance K de chaque élément.

Regardons différents scénarios d'entrée et de sortie -

Input- int n = 20, int k = 2

Output

strong>− Réorganisez les N premiers nombres afin qu'ils soient à K distance : 3 4 1 2 7 8 5 6 11 12 9 10 15 16 13 14 19 20 17 18.

Explication

Explication strong>− On nous donne des variables entières 'N' soit 20 et 'K' soit 2. Nous allons maintenant calculer les permutations de 'N', c'est-à-dire 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18. 19, 20. . Maintenant nous Les éléments seront disposés de telle manière que tous les éléments soient à "k" de chaque élément.

Input− int n = 10, int k = 3

Input − int n = 10, int k = 3

Input p>

Output- Réorganiser les N premiers nombres afin qu'ils soient à Distance K : Impossible

Explication - On nous donne des variables entières 'N' qui vaut 10 et 'K' qui vaut 3. Nous allons maintenant calculer les permutations de « N », c'est-à-dire 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Maintenant, nous allons organiser les éléments de telle manière que tous les éléments soient à une distance de "k" de chaque élément, mais cela n'est pas possible pour la valeur d'entrée donnée.

La méthode utilisée dans le programme ci-dessous est la suivante

  • Entrez un élément de type entier, c'est-à-dire 'N' et 'K'.

  • Appelez la fonction Réarrangement(int n, int k) en passant N et K comme paramètres à la fonction.

  • À l'intérieur de la fonction Rearrangement(int n, int k)

    • déclare une variable entière comme temp et la définit sur n % (2 * k).

    • Déclarez un tableau d'entiers comme ptr 1 de taille n +, c'est-à-dire prt[n+1].

    • Vérifiez SI k = 0 puis commencez à boucler FOR de i à 1 jusqu'à ce que i soit inférieur à la taille et incrémentez i de 1 et imprimez i.

    • Vérifiez SI la température n'est pas égale à 0 puis imprimez PAS POSSIBLE.

    • Démarrez une boucle FOR de i à 1 jusqu'à ce que i soit inférieur à

    • Démarrez une boucle FOR de i à 1 jusqu'à ce que i soit inférieur à n et réglez i sur i + 2 * k. À l'intérieur de la boucle, démarrez une autre boucle FOR de j à 1 jusqu'à ce que j soit inférieur à k et incrémentez j de 1. À l'intérieur de la boucle, la méthode swa est appelée en passant ptr[i + j -1] et ptr[k + i + j - 1] comme paramètres.

    • Démarrez une boucle FOR de i à 1 jusqu'à ce que i soit inférieur à N et incrémentez i de 1.

    • Imprimer prt[i].

  • Imprimez les résultats.

  • Exemple
    #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

    Si nous exécutons le code ci-dessus, il générera la sortie suivante

    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

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer