Dieser Artikel beschreibt die Methode zur Berechnung der Anzahl der schwarzen Löcher in Java. Teilen Sie es für Ihre Referenz wie folgt weiter:
Jede 5-stellige Zahl, wie: 34256, stören und ordnen ihre Ziffernzahlen neu an, um eine maximale Zahl zu erhalten: 65432 und eine minimale Zahl 23456. Ermitteln Sie die Differenz zwischen diesen beiden Zahlen und erhalten Sie: 41976. Wiederholen Sie den obigen Vorgang erneut mit dieser Zahl (wenn es weniger als 5 Ziffern gibt, addieren Sie an der ersten Stelle 0). Auf diese Weise fallen die Zahlen in einen bestimmten Zyklus (als digitales Schwarzloch bezeichnet).
Zum Beispiel fällt die Zahl gerade in diesen Zyklus: [82962.75933, 63954, 61974].
Bitte schreiben Sie ein Programm, um alle möglichen Schleifenkreise mit 5 Ziffern und Ausgaben zu finden. Jeder Schleifenkreis nimmt 1 Zeile ein. Wenn alle 5-stelligen Zahlen gleich sind, ist der Schleifenkreis [0], was ignoriert werden kann. Das Ausgangsformat des Schleifenkreises wird nachgeahmt als:
[82962,75933, 63954, 61974]
Die Reihenfolge der Zahlen kann ignoriert werden.
Test.java:
public class test {static int r = 0; static int b [] = new int [16]; static int c [] = new int [5]; statische int -sortiert (int n, boolean boo) // Sortierfunktion {int i, j, sum = 0, temp; int a [] = new int [5]; für (i = 0; i <5; i ++) {a [i] = n%10; n/= 10; } für (j = 0; j <4; j ++) für (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; }} für (i = 0; i <5; i ++) sum+= a [i]*(int) math.pow (10,4-i); return sum;} statischer boolescher Boo (int d []) // Richterfunktion {int n, t, q, i, j; boolesche Flagge = wahr; Für (i = 0; i <16; i ++) für (j = i+1; j <16; j ++) if (b [i] == b [j]) // Beurteile, ob es eine Schleife gibt, müssen Sie nur beurteilen, ob dieselbe Zahl zweimal erscheint {d [0] = i; D [1] = j; n = ji; für (q = 0; q <= r; q ++) für (t = i; t <= j; t ++) if (c [q] == b [t]) flag = false; // Verwenden Sie ein eindimensionales Array, um die einstellige Anzahl von Kreis zu speichern. Unter anderem von dem im ursprünglichen eindimensionalen Array gespeicherten Wert, nehmen Sie dann den Schleifenkreis, um die Rückflagge zu speichern. } return flag;} public static void main (String [] args) {int n, m, w, t, p; int r = 1; boolesche Flagge = Falsch; int d [] = new int [2]; System.out.println ("Wulin.com Testergebnis:"); für (m = 10000; m <100000; m ++) {n = m; für (p = 0; p <16; p ++) {w = sort (n, true) -sort (n, false); B [p] = w; n = w; } if (boo (d)) // Ausgabe verschiedener Schleifenkreise {System.out.printf ("["); für (t = d [0]; t <d [1] -1; t ++) system.out.printf ("%d", b [t]); System.out.printf ("%d", b [t]); System.out.printf ("]/n"); }}}}Auslaufergebnisse:
Für weitere Informationen zu Java -Algorithmen können Leser, die an dieser Website interessiert sind, die Themen "Zusammenfassung der mathematischen Java -Fähigkeiten", "Tutorials der Java -Datenstruktur und des Algorithmus", "Zusammenfassung der Java -Operation Dom Node Skills", "Zusammenfassung der Java -Datei- und Directory -Operation Skills" und "Summary Operation Dom Node Skills" und "Summary of Java Cache Operation Skills" und "Summary Of Java Cache Operation Skills"
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.