1. مقدمة
مشكلة جوزيف (تسمى أحيانًا تقليب جوزيف ، هي مشكلة تظهر في علوم الكمبيوتر والرياضيات. في خوارزميات برمجة الكمبيوتر ، تسمى أيضًا مشكلات مماثلة خاتم جوزيف. المعروف أيضًا باسم "مشكلة رمي منديل".).
مثال:
قام لين شخصيا بتشكيل دائرة ولعب لعبة رمي مناديل. بدءًا من الشخص KTH ، بعد العد من 1. عندما يتم حساب M ، سيخرج الشخص الذي يحسب M من الدائرة ، حتى يكون هناك شخص واحد فقط في الدائرة.
تحليل المشكلات وتصميم الخوارزمية
مشكلة جوزيف ليست صعبة ، ولكن هناك العديد من الحلول ؛ هناك العديد من الاختلافات في السؤال. فيما يلي طريقة للتنفيذ.
في السؤال ، يحيط الأفراد Len بدائرة ، مما يلهمنا لاستخدام سلسلة دائرية لتمثيلها. يمكننا استخدام صفيف هيكلي لتشكيل سلسلة دائرية. هناك عضوان في الهيكل ، أحدهما هو عقدة الرأس التي تشير إلى الطفل الأول ، والآخر هو درجة حرارة العقدة كحكم (مسؤول عن لعب الدور الداعم).
الرمز المحدد كما يلي:
Package Demo11 ؛/** * مشكلة جوزيف ، تحولت إلى منديل * * Author tianq Idea: إنشاء فئة طفل ، فئة Loop List Cycllink */Demo11 {Public Static Void Main (String [] args) {Cycllink Cyclink = جديد cycllink () ؛ cyclink.setlen (15) ؛ cyclink.createLink () ؛ cyclink.setk (2) ؛ cyclink.setm (2) ؛ cyclink.show () Child an idthis.no = no ؛} class cycllink {// تحديد مرجع إلى الطفل الأول في القائمة الأولى الطفل الأول // لا يمكن نقل المرجع إلى الطفل الأول {this.m = m ؛} // قم بتعيين حجم القائمة المرتبطة setlen public void (int len) {this.len = len ؛} // قم بتعيين عدد الأشخاص لحساب الفراغ العام setk (int k) {this.k = k ؛ i ++) {temp = temp.nextChild ؛} بينما (this.len! = 1) {// 2. count m for (int j = 1 ؛ j <m ؛ j ++) {temp.nextchild ؛} // ابحث عن الطفل السابق للخروج من الدائرة temp2 = temp ؛ temp ؛ إلى m ، exit temp2.nextChild = temp.nextChild ؛ // دع درجة الحرارة تشير إلى الطفل التالي الذي يحسب temp = temp.nextchild ؛ // this.show () ؛ this.len-؛} // The Last Child System.out.println ("Last Out of the Circle"+temp.no) ؛} // تهيئة قائمة الارتباط الدائري الفراغ العام createlink () {for (int i = 1 ؛ i <= len ؛ i ++) {if (i == 1) this.firstchild = ch ؛ this.temp = ch ؛} آخر {if (i == len) {// إنشاء الطفل الأول ch = طفل جديد (i) ؛ temp.nextChild = ch ؛ temp.nextchild = this.firstchild ؛} آخر {// متابعة لإنشاء الطفل ch = child (i) ؛ temp.nextchild = ch ؛ قائمة الفراغ العامة المرتبطة بالحلقة () {child temp = this.firstchild ؛ do {system.out.print (temp.no + "")نتيجة:
لخص
ما سبق هو كل محتوى هذه المقالة حول مثال تحليل مشكلة جوزيف في برمجة Java ، وآمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!