java 实现数据链表,动态模拟约瑟夫问题求解
package huawei;
public final class Demo {
/*
功能: 约瑟夫问题众所周知,原始的约瑟夫问题是这样的:有n个人,编号为1,2,..., n,站成一圈,
每次第m个将会被处决,直到只剩下一个人。约瑟夫通过给出m来决定赦免其中的一个人。
例如当n=6,m=5时,5,4,6,2,3将会被依次处决,而1将会幸免。
假如有k个好人,和k个坏人,所有人站成一圈,前k个人是好人,后k个人是坏人,
编写程序计算一个最小的m,使k个坏人都被处决,而不处决任何好人。
输入: k 为正整数
输出:
返回: 最小的m,使k个坏人都被处决,而不处决任何好人。
*/
public static int getMinimumM(int K)
{
/*在这里实现功能*/
int result = 1;
while(true){
boolean flag = true;
for(int i = 0; i < K; i++){
int n = 2*K - i;
int temp_result = (result-1) % n;
int temp_i = i;
int temp_n = n;
while(temp_i --> 0){
temp_n++;
temp_result = ( temp_result + result % temp_n ) % temp_n;
}
if(temp_result < K){