第8周筆記5-圍圈報數淘汰模擬

圍圈報數淘汰模擬

        n(n<=100)個人圍成一圈按順序編號,從第一人開始報數,凡報到3的人退出圈子,下一個人從1開始報號,
設計算法求解最後推出圈子的成員編號。

/*
n(n<=100)個人圍成一圈按順序編號,從第一人開始報數,凡報到3的人退出圈子,下一個人從1開始報號,
設計算法求解最後推出圈子的成員編號。 
*/
#include<stdio.h>
#define N 101
int vis[N]; 
int main(){
    int n,i,cnt=0,num=3;
    scanf("%d",&n);
	int remain=n;
	while(remain){
		for(i=1;i<=n;i++){
			if(!vis[i]&&++cnt==num){
				vis[i]=1;
				cnt=0;
				remain--;
				if(remain==0) printf("%d",i);
			}
		}
	}
	return 0;
} 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章