标签:mod 它的 while循环 div rac pre rem http void
约瑟夫环问题:50个人围成一圈,数到3和3的倍数时出圈,问剩下的人是谁?在原来的位置是多少?
思路例如以下:
1)首先,把数据填充到数组或链表中。
2)用一个while循环进行出圈。直到仅仅剩下一个元素留下。
代码例如以下:
package cn.wuhan.unit7;
import java.util.*;
public class YueSeFu {
public static int cycle(int total,int k){
List<Integer> dataList = new LinkedList<Integer>();//创建一个链表
for(int i=0;i<total;i++) //加入数据成员
dataList.add(new Integer(i+1));
int index=-1;
//循环
while(dataList.size()>1){
index = (index+k)%dataList.size();//以(index+k)对size()取余
dataList.remove(index--);
}
return ((Integer)dataList.get(0).intValue());//返回它的值
}
public static void main(String[] args) {
System.out.println("该人原来的位置是: "+cycle(50,3));
}
}
效果例如以下:
标签:mod 它的 while循环 div rac pre rem http void
原文地址:http://www.cnblogs.com/slgkaifa/p/6929125.html