سلام
سورس مسئله ژوزفوس (Josephus problem) با جاوا(java)
مساله ژوزفوس یک مساله نظری درعلوم کامپیوتر و ریاضیات است. افرادی را درنظر بگیرید که دایره وار ایستادهاند و منتظر اعدام هستند.بعد از آنکه اولین نفر اعدام می شود، تعداد مشخصی از افراد رد شده و یک نفر دیگر اعدام می شود. سپس دوباره به همان تعداد، افراد پرش شده و نفر بعد کشته می شود. این فرایند حذف، دور دایره ( که با برداشتن افراد کشته شده کوچک و کوچکتر می گردد)ادامه می یابد تا زمانی که تنها یک نفر باقی می ماند که آزاد می شود. مطلوب، یافتن جایگاهی در دایره اولیه است که شما با قرار گرفتن در آنجا نجات خواهید یافت.
این کد برحسب تعداد و پرش شماره فردی که بیرون میماند را مشخص میکند.
import java.util.*; import java.lang.*; import java.io.*; import java.math.*; class Test { public static void main (String[] args) throws java.lang.Exception { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int temp = n; int m = sc.nextInt(); boolean[] arr = new boolean[n]; int index = -1; while(n>1) { for(int i=0; i<m; i++){ index += 1; if(index>temp-1) { index -= temp; } while(arr[index]==true) { index += 1; if(index>temp-1) { index -= temp; } } } arr[index] = true; n--; } for(int i=0; i<temp; i++) { if(arr[i]==false) { System.out.print(" " + (i+1)); } } sc.close(); } }