บทความนี้อธิบายวิธีการคำนวณจำนวนหลุมดำใน Java แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
หมายเลข 5 หลักใด ๆ เช่น: 34256, รบกวนและจัดเรียงหมายเลขหลักใหม่เพื่อให้ได้หมายเลขสูงสุด: 65432 และหมายเลขต่ำสุด 23456 ค้นหาความแตกต่างระหว่างตัวเลขสองตัวนี้และรับ: 41976 ทำซ้ำกระบวนการข้างต้นด้วยตัวเลขนี้อีกครั้ง โดยการทำเช่นนี้ตัวเลขจะตกอยู่ในรอบหนึ่ง (เรียกว่าหลุมดำดิจิตอล)
ตัวอย่างเช่นจำนวนเพียงตอนนี้จะตกอยู่ในรอบนี้: [82962,75933, 63954, 61974]
โปรดเขียนโปรแกรมเพื่อค้นหาวงกลมลูปที่เป็นไปได้ทั้งหมดที่มี 5 หลักและเอาท์พุทแต่ละวงกลมลูปจะขึ้น 1 บรรทัด หากตัวเลข 5 หลักทั้งหมดเหมือนกันวงกลมลูปคือ [0] ซึ่งสามารถละเว้นได้ รูปแบบเอาต์พุตของวงกลมลูปถูกเลียนแบบเป็น:
[82962,75933, 63954, 61974]
ลำดับของตัวเลขสามารถละเว้นได้
test.java:
การทดสอบระดับสาธารณะ {int คงที่ r = 0; int คงที่ b [] = new int [16]; int แบบคงที่ c [] = new int [5]; การเรียงลำดับ int แบบคงที่ (int n, บูลีนบู) // ฟังก์ชั่นการเรียงลำดับ {int i, j, sum = 0, อุณหภูมิ; int a [] = new int [5]; สำหรับ (i = 0; i <5; i ++) {a [i] = n%10; n/= 10; } สำหรับ (j = 0; j <4; j ++) สำหรับ (i = 0; i <4-j; i ++) {ถ้า (a [i] <a [i+1] && boo) {temp = a [i]; a [i] = a [i+1]; a [i+1] = อุณหภูมิ; } if (a [i]> a [i+1] &&! boo) {temp = a [i]; a [i] = a [i+1]; a [i+1] = อุณหภูมิ; }} สำหรับ (i = 0; i <5; i ++) sum+= a [i]*(int) math.pow (10,4-i); ส่งคืนผลรวม;} บูลีนบูลีนแบบคงที่ (int d []) // ฟังก์ชั่นผู้พิพากษา {int n, t, q, i, j; ธงบูลีน = จริง; สำหรับ (i = 0; i <16; i ++) สำหรับ (j = i+1; j <16; j ++) ถ้า (b [i] == b [j]) // ตัดสินว่ามีลูปคุณต้องตัดสินว่าหมายเลขเดียวกันปรากฏขึ้นสองครั้ง {d [0] = i; D [1] = J; n = ji; สำหรับ (q = 0; q <= r; q ++) สำหรับ (t = i; t <= j; t ++) ถ้า (c [q] == b [t]) ธง = false; // ใช้อาร์เรย์หนึ่งมิติเพื่อเก็บจำนวนหนึ่งหลักของวงกลม แตกต่างจากค่าที่เก็บไว้ในอาร์เรย์หนึ่งมิติดั้งเดิมจากนั้นใช้วงกลมลูปหนึ่งเพื่อบันทึกธงส่งคืน } return flag;} public static void main (string [] args) {int n, m, w, t, p; int r = 1; ธงบูลีน = เท็จ; int d [] = new int [2]; System.out.println ("ผลการทดสอบ wulin.com:"); สำหรับ (m = 10,000; m <100000; m ++) {n = m; สำหรับ (p = 0; p <16; p ++) {w = sort (n, true) -sort (n, false); B [P] = W; n = w; } if (boo (d)) // เอาต์พุตวงกลมลูปที่แตกต่างกัน {system.out.printf ("["); สำหรับ (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
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน