约瑟夫问题怎么理解啊?
问题:n个数字形成一个圈,数字从0开始,每次从这个圈中删除掉第m个数字,求最后一个数字是什么?
解决方法:参考约瑟夫问题,代码如下:
int yuesefu(int n,int m)//这个计算方法如何理解呢? { int i,r=0; for(i=2;i<=n;i++) r=(r+m)%i; return r+1; }import java.util.ArrayList;import java.util.List;public class JosephusRing{ public static void main(String[] args){ final int MAX = 10; //10个人围成一个圈 List list = new ArrayList(); for(int i =0;i<MAX;i++) list.add("第"+i+"个孩子"); while(true) { if(list.size()==0) break; for(int i= 0;i<2;i++) //报到3的出列,其余先删除,后添加 list.add(list.remove(0)); System.out.println(list.remove(0)); } }}
[解决办法]
这个问题我当时就是用链表做的,头指针和尾指针连在一起。