บทความนี้อธิบายถึงวิธีการใช้หมายเลขลูปแบ็คเอาท์พุท (เมทริกซ์เกลียว) ใน Java แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
ฉันเคยเห็นมาก่อน แต่ฉันไม่ได้ทำ ฉันเห็นคุณลาก่อนฟอรัมในวันนั้นและแรงบันดาลใจก็มาถึง มันวิเศษมาก
ความซับซ้อนดูเหมือนจะเป็น o (n)
บันทึกไว้
การสาธิตแพ็คเกจ; คลาสสาธารณะ snakematrixdemo {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {int m = 5;/* แถว*/int n = 5;/* คอลัมน์*/int [] [] pos = int ใหม่ [m] [n];/* ตำแหน่ง*//*** โครงสร้างตำแหน่งดังต่อไปนี้ [0] [0], [0] [1], [0] [1], [0] [2], [0] [3], [0] [4] * * * [1] [0], [1] [1], [1] [2], [1] [3] [1] [4] * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * [3] [0], [3] [1], [3] [2], [3] [3] [4] * * [4] [0], [4] [1], [4] [2], [4] [3], [4] [4] */ int นับ = 0; int r = 0, c = 0;/* r: line subscript c: คอลัมน์ตัวห้อย pos [r] [c] สอดคล้องกับตำแหน่งด้านบน*//* กำหนดทิศทางแรก c ++ จากนั้นลง r ++ จากนั้นออกจาก c-จากนั้นขึ้น r--*/ สุดท้าย int up = 1; int สุดท้ายลง = -1; int สุดท้ายซ้าย = 2; int สุดท้ายขวา = -2; int dir = ขวา;/* เริ่มทิศทาง*/ int cir = 1;/* กี่รอบของการกำหนด*/ ในขณะที่ (นับ <m* n) {count ++; pos [r] [c] = count;/* การกำหนด*/ switch (dir) {กรณีขวา: ถ้า (c <n - cir) {/* ยังไม่มีการกำหนดทางด้านขวาของบรรทัดปัจจุบัน*/ c ++; } else {dir = down; r ++; } หยุดพัก; กรณีลง: ถ้า (r <m - cir) {/* ยังไม่มีการกำหนดด้านล่างคอลัมน์ปัจจุบัน*/ r ++; } else {dir = ซ้าย; C--; } หยุดพัก; กรณีซ้าย: ถ้า (c> cir-1) {/* ยังไม่มีการกำหนดทางด้านซ้ายของบรรทัดปัจจุบัน*/ c--; } else {dir = up; r--; } หยุดพัก; กรณีขึ้น: ถ้า (r> cir) {/* ไม่มีการกำหนดในคอลัมน์ปัจจุบัน*/ r--; } else {cir ++;/* กำหนดวงกลม*/ dir = ขวา; C ++; } หยุดพัก; }} system.out.println ("ผลการทดสอบ wulin.com:"); / * เอาต์พุต */ สำหรับ (int i = 0; i <m; i ++) {สำหรับ (int j = 0; j <n; j ++) {ถ้า (pos [i] [j] <10) {system.out.print (pos [i] [j]+"" ""); } else {system.out.print (pos [i] [j] + ""); }} system.out.println (); -ผลการทำงาน:
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับอัลกอริทึม Java ผู้อ่านที่มีความสนใจในเว็บไซต์นี้สามารถดูหัวข้อ: "โครงสร้างข้อมูล Java และการสอนอัลกอริทึม", "บทสรุปของเคล็ดลับการดำเนินงาน Java Dom", "บทสรุปของไฟล์ Java และเคล็ดลับการดำเนินการไดเรกทอรี" และ "สรุป
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน