收获:
1.
//如果编号从1开始,那么0就代表最大编号的数字
//如果编号从0开始,那么n就代表最大编号的数字
2.
beg=(beg+1)%n;
(beg-1+n)%n
代码:
//猴子选大王
//如果编号从1开始,那么0就代表最大编号的数字
//如果编号从0开始,那么n就代表最大编号的数字
#include<iostream>
using namespace std;
#define MAX 1005
int flag[MAX]; //标记变量
int main()
{
int n;
cin>>n;
int num=n;
int x=0; //记录个数
//int m=2; //如果为约瑟夫环问题变形
//int beg=1; //开始点
int beg=0;
while(num!=1)
{
//beg=(beg+1)%n; //
//printf("%d ",beg);
while(1)
{
if(flag[beg]==0)
{
beg=(beg+1)%n;
x++;
}
else
{
beg=(beg+1)%n;
}
if(x==m)
{
m++;
x=0;