题解 | 约瑟夫环
约瑟夫环
https://www.nowcoder.com/practice/e417cfe32c74416ca38247f619ddb322
#include <stdio.h>
int main() {
int n,k,m;
scanf("%d %d %d",&n,&k,&m);
int a[100]={0};
int count_num = 0;
int count_m = 0;
int i = k-1;//从第k个编号的人开始报数,所以第k个也要检测
while(1)
{
i = (i+1) % n;//环形轮询
if(a[i]==0)
count_m++;
if(count_m == m)
{
a[i] = 1;
count_num++;
count_m = 0;
}
if(count_num == n-1)
break;
}
for(int i=0;i<n;i++)
{
if(a[i]==0)
printf("%d",i);
}
return 0;
}

查看29道真题和解析