Maison > développement back-end > C++ > 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++

王林
Libérer: 2023-09-11 15:13:10
avant
1077 Les gens l'ont consulté

在 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;
    }
    Copier après la connexion

    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
    Copier après la connexion

    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 de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
    Tutoriels populaires
    Plus>
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal