Este artículo describe el método para calcular el número de agujeros negros en Java. Compártelo para su referencia, como sigue:
Cualquier número de 5 dígitos, como: 34256, interrumpir y reorganizar sus números de dígitos para obtener un número máximo: 65432 y un número mínimo 23456. Encuentre la diferencia entre estos dos números y obtenga: 41976. Repita el proceso anterior con este número nuevamente (si hay menos de 5 dígitos, agregue 0 en primer lugar). Al hacer esto, los números caerán en un determinado ciclo (llamado agujero negro digital).
Por ejemplo, el número solo caerá en este ciclo: [82962,75933, 63954, 61974].
Escriba un programa para encontrar todos los círculos de bucle posibles con 5 dígitos y salida, cada círculo de bucle toma 1 línea. Si todos los números de 5 dígitos son los mismos, el círculo de bucle es [0], que se puede ignorar. El formato de salida del círculo de bucle se imita como:
[82962,75933, 63954, 61974]
El orden de los números se puede ignorar.
Test.java:
prueba de clase pública {static int r = 0; static int b [] = new int [16]; static int c [] = new int [5]; static int n (int n, boolean boo) // función de clasificación {int i, j, sum = 0, temp; int a [] = new int [5]; para (i = 0; i <5; i ++) {a [i] = n%10; n/= 10; } para (j = 0; j <4; j ++) para (i = 0; i <4-j; i ++) {if (a [i] <a [i+1] && boo) {temp = a [i]; a [i] = a [i+1]; a [i+1] = temp; } if (a [i]> a [i+1] &&! boo) {temp = a [i]; a [i] = a [i+1]; a [i+1] = temp; }} para (i = 0; i <5; i ++) sum+= a [i]*(int) math.pow (10,4-i); suma de retorno;} Boolean estático boo (int d []) // Juez Función {int n, t, q, i, j; bandera booleana = verdadero; para (i = 0; i <16; i ++) para (j = i+1; j <16; j ++) if (b [i] == b [j]) // juzga si hay un bucle, solo necesita juzgar si el mismo número aparece dos veces {d [0] = i; d [1] = j; n = ji; para (q = 0; q <= r; q ++) para (t = i; t <= j; t ++) if (c [q] == b [t]) flag = false; // use una matriz individual de un día para almacenar el número de un dígito del círculo de bucle (cualquier dígito está bien, el primer círculo se selecciona aquí Valor almacenado en la matriz unidimensional original, luego tome el círculo de bucle para guardar el indicador de retorno; } bandera de retorno;} public static void main (string [] args) {int n, m, w, t, p; int r = 1; bandera booleana = falso; int d [] = new int [2]; System.out.println ("Wulin.com Resultado de la prueba:"); para (m = 10000; m <100000; m ++) {n = m; para (p = 0; p <16; p ++) {w = sort (n, true) -sort (n, falso); B [P] = W; n = w; } if (boo (d)) // emitir diferentes círculos de bucle {System.out.printf ("["); para (t = d [0]; t <d [1] -1; t ++) system.out.printf ("%d,", b [t]); System.out.printf ("%d", b [t]); System.out.printf ("]/n"); }}}}Resultados de ejecución:
Para obtener más información sobre los algoritmos de Java, los lectores que están interesados en este sitio pueden ver los temas: "Resumen de las habilidades de operación matemática de Java", "Tutoriales de la estructura de datos de Java y el algoritmo", "Resumen de las habilidades de nodo DOM de Operación Java", "Resumen del archivo de Java y las habilidades de operación directora" y "Summary of Java Cache Skills"
Espero que este artículo sea útil para la programación Java de todos.