题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
代码:
#include <stdio.h>
int main()
{int n=8;int table[n];for(int i=0;i<n;i++){ //给数组元素赋初值table[i]=1;}int index=0;int baoShu=0;int cnt=n;while(cnt){index++;baoShu++;if(index>n){index=1;}while(table[index-1]==0){index++;if(index>n){index=1;}}if(baoShu==3){table[index-1]=0;printf("%-4d",index);cnt--;baoShu=0;}}printf("\n最后留下的是第%d号",index);return 0;
}
运行:
3 6 1 5 2 8 4 7
最后留下的是第7号
可参考b站视频:
69-约瑟夫环-1_哔哩哔哩_bilibili