تصف هذه المقالة طريقة تنفيذ أرقام استرجاع الإخراج (المصفوفة الحلزونية) في Java. شاركه للرجوع إليه ، على النحو التالي:
لقد رأيته من قبل ، لكنني لم أقم بذلك ؛ رأيتك وداعًا للمنتدى في ذلك اليوم ، وجاء الإلهام. إنه لأمر مدهش للغاية
يبدو أن التعقيد هو o (n)
احفظه
Package Demo ؛ public class snakematrixDemo {public static void main (string [] args) {int m = 5 ؛/* row*/int n = 5 ؛/* column*/int [] [] pos = new int [m] [0] [0] ، [0] [1] ، [0] [1] ، [0] [2] ، [0] [3] ، [0] [4] * * [1] [0] ، [1] [1] ، [1] [3] [0] ، [3] [1] ، [3] [2] ، [3] [3] [4] * [4] [0] ، [4] [1] ، [4] [2] ، [4] [3] ، [4] */ int count = 0 ؛ int r = 0 ، c = 0 ؛/* r: خط تراكب السطر c: العمود التراكمي pos [r] [c] يتوافق مع المواضع أعلاه*//* تعيين الاتجاه ، الأول c ++ ، ثم أسفل r ++ ، ثم اليسار c-- ، ثم up r-- int up = 1 ؛ int النهائي Down = -1 ؛ int النهائي اليسار = 2 ؛ int النهائي اليمين = -2 ؛ int dir = right ؛/* ابدأ الاتجاه*/ int cir = 1 ؛/* كم عدد جولات المهمة*/ بينما (count <m* n) {count ++ ؛ pos [r] [c] = count ؛/* issignment*/ switch (dir) {case right: if (c <n - cir) {/* لا يوجد أي مهمة على الجانب الأيمن من السطر الحالي*/ c ++ ؛ } آخر {dir = down ؛ R ++ ؛ } استراحة؛ DOWN DOWN: if (r <m - cir) {/* لا يوجد أي مهمة أسفل العمود الحالي*/ r ++ ؛ } آخر {dir = left ؛ ج- ؛ } استراحة؛ اليسار: إذا (C> cir-1) {/* لا يوجد أي مهمة على الجانب الأيسر من السطر الحالي*/ c-- ؛ } آخر {dir = up ؛ ص-؛ } استراحة؛ Case Up: if (r> cir) {/* لا توجد مهمة في العمود الحالي*/ r-- ؛ } آخر {cir ++ ؛/* تعيين دائرة*/ dir = right ؛ C ++ ؛ } استراحة؛ }} system.out.println ("wulin.com نتيجة اختبار:") ؛ / * output */ for (int i = 0 ؛ i <m ؛ i ++) {for (int j = 0 ؛ j <n ؛ j ++) {if (pos [i] [j] <10) {system.out.print (poS [i]+""+"") ؛ } آخر {system.out.print (pos [i] [j] + "") ؛ }} system.out.println () ؛ }}}نتائج التشغيل:
لمزيد من المعلومات حول خوارزميات Java ، يمكن للقراء المهتمين بهذا الموقع عرض الموضوعات: "بنية بيانات Java وبرنامج تعليمي الخوارزمية" ، "ملخص" Tips Java ".
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.