约瑟夫闭环:n个人围成一圈,从第一个人开始报数,数到M的人出圈,再由下一个人报,报到m的人出圈,输出依次出圈的人的编号
#include<iostream>
using namespace std;
int main()
{
int table[50]={0};
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
table[i]=1;
}
int flag1=0,flag2=0;
int count=n;
while (count!=0)
{
flag1++;// 计数n
flag2++;// 计数m
while(table[flag1]==0)
{
flag1++;
if(flag1>n)flag1=1;
}
if(flag2==m)
{
cout<<flag1;
table[flag1]=0;
count--;
flag2=0;
}
}
return 0;
}