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

约瑟夫问题

2013年07月28日 ⁄ 综合 ⁄ 共 476字 ⁄ 字号 评论关闭

void WhileOut(int i)

{

    cout<<i<<endl;

}

int Foo(int const  iStep,int const  N)

//N总共人数,iStep为步进个数

{  

    bool* ppArray=new bool[N];

    memset(ppArray,0,N);

    int iLeave=N;

    int iPos=0;

    while (iLeave>1)

    {     

       for (int i=0;i<iStep;)

       {  

           if (!ppArray[iPos])

           {

              i++;

           }

           iPos=(iPos+1)%N;

       }

       ppArray[(iPos+N-1)%N]=true;

       WhileOut((iPos+N-1)%N);

       --iLeave;

    }

    for (int i=0;ppArray[i];++i){}

    delete []ppArray;

    return i;

 

}

 

抱歉!评论已关闭.