#include<iostream>
using namespace std;
int Josephus(int n , int m)
{
int i;
int * num = new int[n]; //num用于记录每个人的编号
for (i = 0; i < n; i++) //初始化每个人的编号
num[i] = i + 1;
i = -1;
int k = 1; //判断是否已经到了循环的末尾,只要找出了n,就可以了
while (1)
{
for (int j = 0; j < m;) //每次到达了m的人就会出来
{
i = (i + 1) % n; //因为数组下标只是从0到n,所以要对n取模
if (num[i] != 0)
++j;
}
if (k == n)break;
num[i] = 0;
k++;
}
return num[i];
}
int main()
{
int n;
int m;
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载