现在的位置: 首页 > 综合 > 正文

20100128_1 约瑟夫环

2013年10月21日 ⁄ 综合 ⁄ 共 670字 ⁄ 字号 评论关闭

namespace __4_CS
{
    //约瑟夫环的关键问题,下一个删除的位置 :(t+m-1) % i
    //t : 上次出列的位置,初始化为0
    //m: 第m个要出去
    //i :当期数组的长度
    //-1 : 从0开始的数组
    class josephus_cycle
    {
       
        //values; //约瑟夫环的原始数据
        //i   约瑟夫环中还剩下的数据个数
        //t  上一个被踢出的兄弟的index
        //m 约瑟夫环的m,第m个兄弟要被踢出
        static public void josephus_begin(int[] beginValue,int m,int i)
        {//关键(t+m-1) % i  ,当没有数据的时候结束
            int t = 0; //上一个被踢出的兄弟的index,t初始化为0
            while(i>0)
            {
                t  = (t + m -1) % i;
                Console.Write("{0},",beginValue[t]);
                for(int j=t+1;j<i;j++)
                {
                    beginValue[j-1] = beginValue[j];
                }
                i--; //元素个数少了1
            }

        }
    }
}

 

抱歉!评论已关闭.