Dado un número N , nuestra tarea es imprimir aquellas permutaciones del entero N que son mayores que N.
Ejemplos:
Entrada: N = 534
Salida: 543
Entrada: N = 324
Salida: 342, 423, 432
Enfoque: para resolver este problema, podemos obtener todas las permutaciones lexicográficamente más grandes de N usando el método next_permutation() en C++. Después de obtener todos esos números, imprímalos.
Para otros idiomas, encuentre las permutaciones del número N e imprima los números que son mayores que N.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation to print all the // permutation greater than the integer N #include <bits/stdc++.h> using namespace std; // Function to print all the permutation // which are greater than N itself void printPermutation(int N) { int temp = N, count = 0; // Iterate and count the // number of digits in N while (temp > 0) { count++; temp /= 10; } // vector to print the // permutations of N vector<int> num(count); // Store digits of N // in the vector num while (N > 0) { num[count-- - 1] = N % 10; N = N / 10; } // Iterate over every permutation of N // which is greater than N while (next_permutation( num.begin(), num.end())) { // Print the current permutation of N for (int i = 0; i < num.size(); i++) cout << num[i]; cout << "\n"; } } // Driver Code int main() { int N = 324; printPermutation(N); return 0; }
Java
// Java implementation to print all the // permutation greater than the integer N import java.util.*; class GFG{ static void printPermutation(int N) { int temp = N, count = 0; // Iterate and count the // number of digits in N while (temp > 0) { count++; temp /= 10; } // vector to print the // permutations of N int[] num = new int[count]; // Store digits of N // in the vector num while (N > 0) { num[count-- - 1] = N % 10; N = N / 10; } // Iterate over every permutation of N // which is greater than N while (next_permutation(num)) { // Print the current permutation of N for (int i = 0; i < num.length; i++) System.out.print(num[i]); System.out.print("\n"); } } // Function to print all the permutation // which are greater than N itself static boolean next_permutation(int[] p) { for (int a = p.length - 2; a >= 0; --a) if (p[a] < p[a + 1]) for (int b = p.length - 1;; --b) if (p[b] > p[a]) { int t = p[a]; p[a] = p[b]; p[b] = t; for (++a, b = p.length - 1; a < b; ++a, --b) { t = p[a]; p[a] = p[b]; p[b] = t; } return true; } return false; } // Driver Code public static void main(String[] args) { int N = 324; printPermutation(N); } } // This code contributed by sapnasingh4991
C#
// C# implementation to print all the // permutation greater than the integer N using System; class GFG{ static void printPermutation(int N) { int temp = N, count = 0; // Iterate and count the // number of digits in N while (temp > 0) { count++; temp /= 10; } // vector to print the // permutations of N int[] num = new int[count]; // Store digits of N // in the vector num while (N > 0) { num[count-- - 1] = N % 10; N = N / 10; } // Iterate over every permutation of N // which is greater than N while (next_permutation(num)) { // Print the current permutation of N for (int i = 0; i < num.Length; i++) Console.Write(num[i]); Console.Write("\n"); } } // Function to print all the permutation // which are greater than N itself static bool next_permutation(int[] p) { for (int a = p.Length - 2; a >= 0; --a) if (p[a] < p[a + 1]) for (int b = p.Length - 1;; --b) if (p[b] > p[a]) { int t = p[a]; p[a] = p[b]; p[b] = t; for (++a, b = p.Length - 1; a < b; ++a, --b) { t = p[a]; p[a] = p[b]; p[b] = t; } return true; } return false; } // Driver Code public static void Main(String[] args) { int N = 324; printPermutation(N); } } // This code is contributed by Rohit_ranjan
Javascript
<script> // JavaScript implementation to print all the // permutation greater than the integer N function printPermutation(N) { let temp = N, count = 0; // Iterate and count the // number of digits in N while (temp > 0) { count++; temp = parseInt(temp / 10, 10); } // vector to print the // permutations of N let num = new Array(count); num.fill(0); // Store digits of N // in the vector num while (N > 0) { num[count-- - 1] = N % 10; N = parseInt(N / 10, 10); } // Iterate over every permutation of N // which is greater than N while (next_permutation(num)) { // Print the current permutation of N for (let i = 0; i < num.length; i++) document.write(num[i]); document.write("</br>"); } } // Function to print all the permutation // which are greater than N itself function next_permutation(p) { for (let a = p.length - 2; a >= 0; --a) if (p[a] < p[a + 1]) for (let b = p.length - 1;; --b) if (p[b] > p[a]) { let t = p[a]; p[a] = p[b]; p[b] = t; for (++a, b = p.length - 1; a < b; ++a, --b) { t = p[a]; p[a] = p[b]; p[b] = t; } return true; } return false; } let N = 324; printPermutation(N); </script>
Producción:
342 423 432