تصف هذه المقالة مبادئ وأساليب التنفيذ لخوارزمية تكامل Java Dicsian. شاركه للرجوع إليه ، على النحو التالي:
تنفيذ جافا لخوارزمية المنتج الديكارت:
(1) في الحلقة ، يتحرك عمود واحد فقط إلى أسفل خلية واحدة في وقت واحد ، وهو العمود الذي يشير إليه CounterIndex.
(2) إذا وصل العمود إلى الذيل ، يتم إعادة تعيين فهرس هذا العمود إلى 0 ، ويشير CounterIndex إلى العمود السابق ، وهو ما يعادل حمله ، إضافة أحد فهرس العمود السابق.
(3) أخيرًا ، يتم التحكم في عدد الصفوف التي تم إنشاؤها للخروج من الحلقة.
اختبار الفئة العامة {private static string [] aa = {"aa1" ، "aa2"} ؛ سلسلة ثابتة خاصة [] bb = {"bb1" ، "bb2" ، "bb3"} ؛ سلسلة ثابتة خاصة [] CC = {"CC1" ، "CC2" ، "CC3" ، "CC4"} ؛ سلسلة ثابتة خاصة [] [] xyz = {aa ، bb ، cc} ؛ private static int counterIndex = xyz.length - 1 ؛ int static int [] counter = {0 ، 0 ، 0} ؛ static static void main (string [] args) يرمي الاستثناء {for (int i = 0 ؛ i <aa.length * bb.length * cc.length ؛ i ++) {system.out.print (aa [counter [0]) ؛ system.out.print ("/t") ؛ System.out.print (BB [Counter [1]]) ؛ system.out.print ("/t") ؛ system.out.print (cc [counter [2]]) ؛ system.out.println () ؛ مقبض()؛ }} public static void handle () {counter [counterIndex] ++ ؛ if (counter [counterIndex]> = xyz [counterIndex] .Length) {counter [counterIndex] = 0 ؛ counterIndex-- ؛ if (counterIndex> = 0) {handle () ؛ } counterIndex = xyz.length - 1 ؛ }}}الإخراج 2*3*4 = 24 سطرًا في المجموع:
AA1 BB1 CC1AA1 BB1 CC2AA1 BB1 CC3AA1 BB1 CC4AA1 BB2 CC1AA1 BB2 CC2AA1 BB2 CC3AA1 BB2 CC4A1 BB3 CC1AA2 BB1 CC2AA2 BB1 CC3AA2 BB1 CC4AA2 BB2 CC1AA2 BB2 CC2AA2 BB2 CC3AA2 BB2 CC4AA2 BB3 CC1AA2 BB3 CC3AA2 BB3 CC4
واجهت مؤخرًا متطلبات خوارزمية منتج ديكارت. على سبيل المثال ، المعلمة التي تم تمريرها هي "1،3،6،7 == 4،5،8،9 == 3،4 == 43،45،8،9 == 35،4" ، والقائمة التي تم إرجاعها ، مثل [1،4،3،43،35] [1،4،3،43،4] [1،4،3،35] الفكرة الحالية هي كما يلي:
استيراد java.util.arraylist ؛ استيراد java.util.arrays ؛ استيراد java.util.list ؛ فئة عامة descartest { /** * احصل على منتج cartesian من n sets * * الوصف: إذا كانت السلسلة التي تم تمريرها هي: a = [1 ، 2 ، 3] * b = [5 ، 6] * c = [7 ، 8] * الأحجام هي: a_length = 3 ، b_length = 2 ، c_length = 2 ، * الحجم الإجمالي للقائمة المستهدفة هو: Totalsize = 3 * 2 * 2 = 12 * لكل مجموعة فرعية A ، B ، C ، عدد العدد الإجمالي = رقم العدد من العناصر *. في A ، عدد الحلقات = إجمالي عدد السجلات/(عدد العناصر*عدد المنتجات الديكارتية للمجموعة اللاحقة) = 12/(3*4) = 1 وقت ، يتم طباعة عدد كل عنصر من العناصر لكل حلقة: عدد العدد من المنتجات ؛ 12/(2 * 2) = 3 مرات ، يتم طباعة عدد المرات لكل حلقة لكل عنصر: عدد المنتجات الديكارتية للمجموعة اللاحقة = 2 * عدد المرات التي تصل إلى كل عنصر في C = إجمالي عدد السجلات/(عدد العناصر * عدد المنتجات التي يتم طباعتها من العارضة ؛ نتيجة الجري: * [[1 ، 2 ، 3] ، [5 ، 6] ، [7 ، 8]] حلقة لكل عنصر 3 مرات ، كل عنصر في حلقة C لكل عنصر 6 مرات ، في كل مرة طباعة 1 * * param args */ public static void main (string [] args) {// todo todo method method string string string str = "1،3،6،7 == 4،5،8،9 == 3،4 == 43،45،4،8،9 == 35،4" ؛ قائمة <Tring> result = descartes (str) ؛ System.out.println (نتيجة) ؛ } suppressWarnings ("RawTypes") القائمة الثابتة العامة <string> descartes (String str) {String [] list = str.split ("==") ؛ قائمة <list> strs = new ArrayList <list> () ؛ لـ (int i = 0 ؛ i <list.length ؛ i ++) {strs.add (arrays.aslist (list [i] .split ("،"))) ؛ } system.out.println (strs) ؛ إجمالي int = 1 ؛ لـ (int i = 0 ؛ i <strs.size () ؛ i ++) {total*= strs.get (i) .size () ؛ } string [] mysesult = new string [total] ؛ int الآن = 1 ؛ // عدد المطبوعات لكل عنصر int itemloopnum = 1 ؛ // إجمالي عدد الحلقات لكل عنصر int loopperItem = 1 ؛ لـ (int i = 0 ؛ i <strs.size () ؛ i ++) {list temp = strs.get (i) ؛ الآن = الآن*temp.size () ؛ // قيمة فهرس الصفيف الهدف هي int index = 0 ؛ int التيارت = temp.size () ؛ itemLoopNum = total/now ؛ loopperItem = total/(itemLoopNum*turrentize) ؛ int myindex = 0 ؛ لـ (int j = 0 ؛ j <temp.size () ؛ j ++) {// العدد الإجمالي للحلقات لكل عنصر (int k = 0 ؛ k <loopperItem ؛ k ++) {if (myindex == temp.size ()) myindex = 0 ؛ // عدد المطبوعات لكل عنصر لكل حلقة لـ (int m = 0 ؛ m <itemLoopNum ؛ m ++) {mysesult [index] = (mysesult [index] == null؟ فهرس ++ ؛ } myindex ++ ؛ }}} report arrays.aslist (mysesult) ؛ }}إخراج النتيجة:
[[1 ، 3 ، 6 ، 7] ، [4 ، 5 ، 8 ، 9] ، [3 ، 4] ، [43 ، 45 ، 8 ، 9] ، [35 ، 4]]
[1،4،3،43،35 ، 1،4،3،43،4 ، 1،4،3،45،35 ، 1،4،3،45،4 ، 1،4،3،8،4 ، 1،4،4،4،4،43،4 ، 4،4،4،3،3،4 ، 1،4،4،43،35 ، 1،4،4،4،4،4،4 ، 1،4،4،8،35 ، 1،4،4،4،35 ، 1،4،4،9،4 ، 1،5،3،43،4 ، 1،5،3،45 ، 1،5،555 ، 1،5،3،45 ، 1،5،3،45 ، 1،5،3،45 ، 1،5،3،45 ، 1،5،3،45 ، 1،5،3،45 ، 1،5،3،45 ، 1،5،5،55 ، 1،5،3،45 ، 1،5،3،45 ، 1،5،3،45 ، 1،5،3،45 ، 1،5،3،45 ، 1،5،3،45 ، 1،5،3،45 ، 1،5،5،55 ، 1،5،3،45 ، 1،5،3،8،35 ، 1،5،3،8،4 ، 1،5،3،9،35 ، 1،5،3،9،4 ، 1،5،4،43،35 ، 1،5،4،4،4،4،4،4،4،4،4،4،35 ، 1،5،4،9،35 ، 1،5،4،9،4 ، 1،8،3،43،35 ، 1،8،3،45 ، 1،8،3،45 ، 1،8،3،45 ، 1،8،3،8،8،8،3،3،3،8،8،3،3،8،3،4 ، 1،8،3،9،35 ، 1،8،3،9،35 ، 1،8،3،9،35 ، 1،8،3،9،35 ، 1،8،3،3،35 ، 1،8،3،35 ، 1،8،3،3،35 ، 1،8،3،3،35 ، 1،8،3،9،9،9،35 ، 1،8،4،43،35 ، 1،8،4،43،4 ، 1،8،4،45،35 ، 1،8،45،4 ، 1،8،4،8،4،4 ، 1،8،4،4،4 ، 1،8،4،4،35 ، 1،8،4،4 ، 2،9،3،3،4 ، 1،9،3،45 ، 1،9،3،45 ، 1،9،3،8،4 ، 1،9،3،9،4 ، 1،9،43،4 ، 1،9،4،45،35 ، 1،9،43،4 ، 1،9،4،4،4،4،4،4،4،4،4،4 ، 1،9،4،45،4 ، 3،4،4،4،35 ، 3،4،4،4،3،35 ، 3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,3,4,4,3,4,4,3,4,4,3,4,4,3,4,4,4,3,35, 3,4,4,4,4,4,3,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3 ,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,35, 3،4،4،4،4،4،3،4،4،4،4،4،4،4،4،4،4،4،4،35 ، 3،4،4،4،4،4،4،4،4،4،4،4،4،4،3،3،4،4،4،4،4،4،4،4،4،4،4،35 ، 3،4،4،4،4،4،4،4،4،4،4،4،3،4،4،4،4،4،4،35 ، 3،5،3،43،35 ، 3،5،3،43،4 ، 3،5،5،3،35 ، 3،5،3،9،4 ، 3،5،4،43،35 ، 3،5،4،43،4 ، 3،5،45،4 ، 3،5،4 ، 3،5،4،4،4 ، 3،5،4 ، 43،43،4 ، 3،43،4 ، 3،8،4 ، 3،8،3،4 ، 3،8،3،45 ، 3،8،3،43،4 ، 3،8،3،45 ، 3،8،3،45 ، 3،8،3،45 ، 3،8،3،45 ، 3،8،3،45 ، 4،45 ، 3،8،3،45 ، 3،8،3،45 ، 3،8،3،3،45 ، 3،8،3،8،4 ، 3،8،3،9،35 ، 3،8،3،9،4 ، 3،8،43،4 ، 3،8،43،4 ، 3،8،4،45،35 ، 3،8،4،4،45،4 ، 3،9،3،43،4 ، 3،9،3،45 ، 3،9،3،45 ، 3،9،3،45 ، 3،9،3،45 ، 3،9،3،9،3،45 ، 3،9،3،9،3،9،3،9،3،9،3،3،3،3،3،3،9،3،3،3،3،3،3،3،3،3،3،9،3،3،3،9،3،3،3،3،3،3،9 ، 3،9،3،9،3،9،3،9،3،9،3،3،9،3،3،3،3،3،3،3،3،3،3،9،3،3،3،9،3،3،3،9،3،3،3،9،3،9،3 ، 3،9،3،9،3،9،3،9،3،9،3،3،9،3،3،3،3،3،3،3،3،3،3،9،3،3،3،9،3،3،3،9،3،3،3،9،3،9،3 ، 3،9،3،9،3،9،3،9،3،9،3،3،9،3،3،3،3،3،3،3،3،3،3،9،3،3،3،9،3،3،3،9،3،3،3،9،3،9،3 3،9،4،43،35 ، 3،9،4،43،4 ، 3،9،4،45،35 ، 3،9،4،4،4 ، 3،9،4،8،35 ، 3،9،4،4،4،43،4،43،4،43،4،43،43،4،43،43،43،43،43،43،43،43،43،43،43،43،43،43،43،43،43،43،43،43،43،43،43،4 ، 6،4،3،45 ، 6،4،3،45 ، 6،4،3،8،4 ، 6،4،3،9،4 ، 6،4،4،43،35 ، 6،4،4،43،4 ، 6،4،4،45،35 ، 6،4،4،4،4،4،4،4،35 ، 6،4،4،4،4،4،43،4 ، 6،4،4،45،35 ، 6،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4 ، 4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4 ، 4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4 ، 4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4 6,4,4,8,35, 6,4,4,8,4,6,4,4,9,35, 6,4,4,9,35, 6,4,4,9,4,6,5,3,43,4,6,5,3,43,4,6,5,3,45, 6,5,3,45,4,6,5,3,8,4, 6,5,3,8,4, 6،5،3،9،4 ، 6،5،4،43،4 ، 6،5،4،45،35 ، 6،5،4،4 ، 6،5،4،8،35 ، 6،5،4،9،35 ، 6،5،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4 6،5،4،8،35 ، 6،5،4،9،35 ، 6،5،4،9،35 ، 6،5،4،9،4 ، 6،8،3،43،35 ، 6،8،3،43،4 ، 6،8،3،3،45،35 ، 6،8،3،45،4 ، 6،8،3،8،4 6،8،3،8،4 ، 6،8،3،9،35 ، 6،8،3،9،4 ، 6،8،43،4 ، 6،8،4،45 ، 6،8،4،45 ، 6،9،4،4،4 ، 6،9،3،4 ، 6،9،3،3،3،3،3،4 ، 6،9،3،3،4 ، 6،9،3،45 ، 6،9،3،45 ، 6،9،3،45 ، 6،9،3،45 ، 6،9،3،45 ، 6،9،3،45 ، 6،9،3،45 ، 6،9،3،3،45 ، 6،9،3،45 ، 6،9،3،45 ، 6،9،3،45 ، 6،9،3،45 ، 6،9،3،45 ، 6،9،3،45 ، 6،9،3،45 ، 6،9،3،3،45 ، 6،9،3،45 ، 6،9،3،45 ، 6،9،3،45 ، 6،9،3،45 ، 6،9،3،45 ، 6،9،3 6،9،3،8،35 ، 6،9،3،43،4 ، 6،9،9،3،35 ، 6,9,4,45,35, 6,9,4,45,4, 6,9,4,4, 6,9,4,8,35, 6,9,4,9,4, 7,4,3,43,4, 7,4,3,45, 7,4,3,8,4, 7,4,3,8,4, 7,4,3,9,4, 7,4,3,43,4, 7،4،3،8،4 ، 7،4،3،8،4 ، 7،4،3،9،35 ، 7،4،3،9،4 ، 7،4،3،4،4 ، 7،4،3،9،35 ، 7،4،3،4،4 ، 7،4،4،4،4،7،4،4،8،35 ، 7،4،4،8،4،4،4،9،35 ، 7،4،4،35 ، 7،4،4،35 ، 7،5،5،4،3،45 ، 7،5،3،45 ، 7،5،3،8،4 ، 7،5،3،9،35 ، 7،5،43،4 ، 7،5،4،43،4 ، 7،5،4،43،4 ، 7،5،5،43،4 ، 7،5،4،45،35 ، 7،5،4،45،4 7,5,4,8,4,7,5,4,8,4,7,5,4,9,35, 7,5,4,9,35, 7,5,4,9,4,7,8,3,43,4, 7,8,3,43,4, 7,8,3,45, 7,8,3,45, 7,8,3,45, 7,8,3,45, 7،8،3،8،4 ، 7،8،4،9،35 ، 7،8،4،9،35 ، 7،8،4،9،35 ، 7،8،43،4 ، 7،8،4،45 ، 7،8،4،45 ، 7،8،8،4،4،9،35 ، 7،8،4،9،35 7،8،4،9،35 ، 7،8،4،9،35 ، 7،8،4،4 ، 7،8،4،9،35 ، 7،8،4،4،4،4 ، 7،8،4،9،35 ، 7،8،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،4،. 7،8،4،9،35 ، 7،8،4،9،4،4 ، 7،9،3،3،43،35 ، 7،9،3،43،4 ، 7،9،3،45،35 ، 7،9،3،9،4 ، 7،9،9،3،9،3،9،3،3،9،3،9،3،9،3،3،3،3،3،3،3،3،3،3،3،3،3،3،4 ، 7،9،4،43،35 ، 7،9،4،45 ، 7،9،4،45 ، 7،9،4 ، 7،9،4،8،35 ، 7،9،4،9،4،4،4،4،4،4،4،4،4،4،4،9،9،4،4،9،9،9،9،4،4،9،4،4،4،4،4،4
الخوارزمية العودية:
public static void fn (list <string []> list ، string [] arr ، string str) {// iTery List List <string> li = new ArrayList <String> () ؛ لـ (int i = 0 ؛ i <list.size () ؛ i ++) {// احصل على المصفوفة الحالية if (i == list.indexof (arr)) {// تكرار system.out.println (arr.length) ؛ لـ (String st: arr) {st = str + st ؛ if (i <list.size ()-1) {fn (list ، list.get (i+1) ، st) ؛ } آخر إذا (i == list.size ()-1) {li.add (st) ؛ }}}} لـ (int i = 0 ؛ i <li.size () ؛ i ++) {system.out.println (li.get (i)) ؛ }}لمزيد من المعلومات حول خوارزميات Java ، يمكن للقراء المهتمين بهذا الموقع عرض الموضوعات: "بنية بيانات Java وبرنامج تعليمي الخوارزمية" ، "ملخص" Tips Java ".
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.