この記事では、Javaのブラックホールの数を計算する方法について説明します。次のように、参照のために共有してください。
次のような5桁の数字は、次の5桁の数字で、桁数を破壊して再配置して最大数を取得します。65432と最低数値23456。これら2つの数値の違いを見つけて、41976を取得します。これを行うことにより、数字は特定のサイクルに分類されます(デジタルブラックホールと呼ばれます)。
たとえば、今の数はこのサイクルに分類されます:[82962,75933、63954、61974]。
5桁と出力で可能なすべてのループ円を見つけるプログラムを作成してください。各ループサークルは1行を占有します。すべての5桁の数値が同じ場合、ループ円は[0]であり、無視できます。ループ円の出力形式は、次のように模倣されています。
[82962,75933、63954、61974]
数字の順序は無視できます。
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)//並べ替え関数{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 ++)for(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; }} for(i = 0; i <5; i ++)sum+= a [i]*(int)math.pow(10,4-i); return sum;} static boolean boo(int d [])// judge function {int n、t、q、i、j;ブールフラグ= true; (i = 0; i <16; i ++)for(j = i+1; j <16; j ++)if(b [i] == b [j])//ループがあるかどうかを判断すると、同じ数が2回{d [0] = i; d [1] = j; n = ji; (q = 0; q <= r; q ++)for(t = i; t <= j; t ++)if(c [q] == b [t])flag = false; // 1桁数のループサークルを保存するために1次元数を保存します(任意の数字は大丈夫です)元の1次元配列に保存されている値とは異なり、ループサークルの1つを使用して戻りフラグを保存します。 } 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テスト結果:"); 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))//出力異なるループ円{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 Operation Dom Nodeスキルの概要」、「Javaファイルの要約および監督操作スキル」、Java Cache操作スキルの概要を見ることができます。
この記事がみんなのJavaプログラミングに役立つことを願っています。