Este artigo descreve o método de calcular o número de buracos negros em Java. Compartilhe -o para sua referência, como segue:
Qualquer número de 5 dígitos, como: 34256, interrompe e reorganize seus números de dígitos para obter um número máximo: 65432 e um número mínimo 23456. Encontre a diferença entre esses dois números e obtenha: 41976. Repita o processo acima com este número novamente (se houver menos de 5 dígitos, adicione 0 em primeiro lugar). Ao fazer isso, os números cairão em um determinado ciclo (chamado de buraco negro digital).
Por exemplo, o número agora cairá neste ciclo: [82962.75933, 63954, 61974].
Escreva um programa para encontrar todos os círculos de loop possíveis com 5 dígitos e saída, cada círculo de loop ocupa 1 linha. Se todos os números de 5 dígitos forem iguais, o círculo de loop será [0], que pode ser ignorado. O formato de saída do círculo de loop é imitado como:
[82962.75933, 63954, 61974]
A ordem dos números pode ser ignorada.
Test.java:
Public class Test {static int r = 0; static int b [] = new int [16]; static int c [] = new int [5]; static int sort (int n, boolean boo) // função de classificação {int i, j, sum = 0, temp; int a [] = new int [5]; for (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 ++) soma+= a [i]*(int) math.pow (10,4-i); Retornar soma;} boolean estático boo (int d []) // função do juiz {int n, t, q, i, j; bandeira booleana = true; para (i = 0; i <16; i ++) para (j = i+1; j <16; j ++) se (b [i] == b [j]) // julga se existe um loop, você só precisa julgar se o mesmo número aparece duas vezes {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 uma matriz unidimensional para armazenar o número de um dígito do círculo de um dígito (algum dígito é o primeiro dígito. diferente do valor armazenado na matriz unidimensional original e, em seguida, pegue o círculo do loop para salvar o sinalizador de retorno; } retornar sinalizador;} public static void main (string [] args) {int n, m, w, t, p; int r = 1; bandeira booleana = false; int d [] = new int [2]; System.out.println ("Wulin.com Resultado do teste:"); for (m = 10000; m <100000; m ++) {n = m; for (p = 0; p <16; p ++) {w = sort (n, true) -sort (n, false); b [p] = w; n = w; } if (boo (d)) // saída de diferentes círculos de loop {System.out.printf ("["); for (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 em execução:
Para obter mais informações sobre os algoritmos Java, os leitores interessados neste site podem visualizar os tópicos: "Resumo das habilidades de operação matemática de Java", "Tutoriais da estrutura de dados e algoritmo Java", "Resumo de Java Operação Dom Node Skills", "Summary of Java e Operação Operação Skills" e "Summery de Jav Skills", "Summary of Java File and Directory Operation Skills" e "Summary de Jav.
Espero que este artigo seja útil para a programação Java de todos.