发新话题
打印

Joseph(约瑟夫)环问题的解决方案(代码)

Joseph(约瑟夫)环问题的解决方案(代码)

问题描述:n个人围成一个环,编号1-n,然后从1号开始报数,报m的出列,下一个人再从1开始报,求出列的人的编号顺序(或者求谁最后出列)
#include <stdio.h>
#include <conio.h>
int main( void )
{
    int n, i = 0, m, p;
    scanf("%d%d", &n, &m); //n总人数,m步长
    while( ++i <= n )
    {
        p = i * m;
        while (p > n)
            p = p - n + (p - n - 1)/(m - 1);
        printf("%d\n", p);
    }
    getch();return 0;
}
网络对每个人都是平等的,没有高低贵贱,没有美丑贫富,每个人都可以自由的张扬他梦想的灵魂,可以狂笑,可以呐喊,也可以哭泣..

TOP

#include "stdafx.h"


#using <mscorlib.dll>


using namespace System;




#define N 105


#define M 9


int _tmain()


{


     int A[N],i;   


     for(i=0;i<N;i++)


         A=i+1;


     int j=0,done=1;


     int * p;


     while(done)


     {


         done=0;


         i=0;


         p=A;


         while(i++<N)


         {


              if((*p)!=(N+1))


              {


                   j++;


                   done=1;


                   if(j%M==0)


                   {


                       printf("%d \n",(*p));


                       (*p)=N+1;                  


                   }


              }


              p++;


         } //end of while(i++<N)


     }  //end of while(done)
}
网络对每个人都是平等的,没有高低贵贱,没有美丑贫富,每个人都可以自由的张扬他梦想的灵魂,可以狂笑,可以呐喊,也可以哭泣..

TOP

可以直接算出公式来的
因为梦想而努力,因为有你而精彩!
mail: qianzongming@gmail.com

TOP

发新话题