Maison > Article > développement back-end > Réorganiser les N premiers nombres afin qu'ils soient distants de K en C++
É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. 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. Si nous exécutons le code ci-dessus, il générera la sortie suivanteLa méthode utilisée dans le programme ci-dessous est la suivante
#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
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!