约瑟夫问题怎么理解啊?
问题:n个数字形成一个圈,数字从0开始,每次从这个圈中删除掉第m个数字,求最后一个数字是什么?
解决方法:参考约瑟夫问题,代码如下:
- C/C++ code
int yuesefu(int n,int m)//这个计算方法如何理解呢? { int i,r=0; for(i=2;i<=n;i++) r=(r+m)%i; return r+1; }[解决办法]
http://www.cnblogs.com/EricYang/archive/2009/09/04/1560478.html
楼主参考
第一次见到这么解决约瑟夫环问题,学习了。。
[解决办法]
n个数字形成一个圈,数字从0开始,每次从这个圈中删除掉第m个数字,然后从第m+1个数字开始从新计数,继续删除第m个,重复上面的就好了,
[解决办法]
- Java code
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)); } }}
[解决办法]
这个问题我当时就是用链表做的,头指针和尾指针连在一起。