读书人

约瑟夫有关问题如何理解啊

发布时间: 2012-04-25 19:32:32 作者: rapoo

约瑟夫问题怎么理解啊?
问题: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));                }    }}
[解决办法]
这个问题我当时就是用链表做的,头指针和尾指针连在一起。

读书人网 >软件架构设计

热点推荐