В этой статье описывается метод расчета количества черных отверстий в Java. Поделитесь этим для вашей ссылки, следующим образом:
Любое 5-значное число, такое как: 34256, разрушить и перестраивать числа цифр, чтобы получить максимальное число: 65432 и минимальное число 23456. Найдите разницу между этими двумя числами и получите: 41976. Повторите вышеупомянутый процесс с этим номером (если существует менее 5 цифр, добавьте 0 в первую очередь). Делая это, цифры попадут в определенный цикл (называемый цифровой черной дырой).
Например, число только сейчас попадет в этот цикл: [82962,75933, 63954, 61974].
Пожалуйста, напишите программу, чтобы найти все возможные круги цикла с 5 цифр и вывода, каждый круг круга занимает 1 строку. Если все 5-значные числа одинаковы, кружок петли равен [0], который можно игнорировать. Выходной формат круга петли подражается:
[82962,75933, 63954, 61974]
Порядок чисел может быть проигнорирован.
Test.java:
открытый тест класса {static int r = 0; static int b [] = new int [16]; static int c [] = new int [5]; static int sort (int n, boolean boo) // Функция сортировки {int i, j, sum = 0, temp; int a [] = new int [5]; for (i = 0; i <5; i ++) {a [i] = n%10; n/= 10; } for (j = 0; j <4; j ++) для (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; }} для (i = 0; i <5; i ++) sum+= a [i]*(int) math.pow (10,4-i); return Sum;} статический логический Boo (int d []) // Судья функция {int n, t, q, i, j; логический флаг = true; for (i = 0; i <16; i ++) для (j = i+1; j <16; j ++) if (b [i] == b [j]) // судить, есть ли цикл, вам нужно только судить, появляется ли одно и то же число дважды {d [0] = i; d [1] = j; n = ji; for (q = 0; q <= r; q ++) для (t = i; t <= j; t ++) if (c [q] == b [t]) flag = false; // Используйте одномерную массив для хранения однократного числа круга петли (любая цифра в порядке, первая цифра выбирается здесь). отличается от значения, хранящегося в исходном одномерном массиве, затем возьмите один из круга петли, чтобы сохранить флаг возврата; } return flag;} public static void main (string [] args) {int n, m, w, t, p; int r = 1; логический флаг = false; int d [] = new int [2]; System.out.println ("wulin.com Результат теста:"); для (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)) // Вывод разных кругов цикла {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"); }}}}Результаты работы:
Для получения дополнительной информации об алгоритмах Java читатели, которые заинтересованы в этом сайте, могут просмотреть темы: «Сводка навыков математической операции Java», «Учебные пособия по структуре данных Java и алгоритм», «Сводка навыков операции Java Dom Node», «Сводка навыков операции Java File и каталогов» и «Сводка навыков операции Java CACHE».
Я надеюсь, что эта статья будет полезна для всех Java Programming.