josephus问题

来源:互联网 发布:spring源码tx 编辑:程序博客网 时间:2024/05/18 16:56

看书上写的很蛋疼,好好的一个问题,不描述清楚,你妹程序怎么写!!!


 josephus问题:Josephus问题:设有n个人围坐在一个圆桌周围,现从第s个人开始报数,数到第m的人出列,
   然后从出列的下一个人重新开始报数,数到第m的人又出列……如此反复直到所有的人全部
   出列为止。Josephus问题是:对于任意给定的n,s,m,求出按出列次序得到的n个人员的序列。

#include <iostream>  using namespace std;  int main()  {    const int num=5;    int interval;    int a[num];    for(int i=0; i<num; i++)    {      a[i]=i+1;    }       cout <<"please input the interval: ";    cin >>interval;    for(int i=0; i<num; i++)    {      cout <<a[i] <<",";    }      cout <<endl;    int k=1;  int p=-1;    while(1)  {      for(int j=0;j<interval;)      {          p=(p+1)%num;          if(a[p]!=0)          {              j++;          }      }      if(k==num)      {          break;      }      cout<<a[p]<<",";      a[p]=0;      k++;  }  cout <<"\nNo." <<a[p] <<" boy've won.\n"; system("PAUSE");return 1; }