您的位置:首页 > 其它

有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下来的是原来第几号的那位?

2018-01-27 08:57 387 查看
这是公司笔试经常会遇到的题目

int flag
={0};
   //n为最初围成一圈的人数

int i=0,j=0,k=0,end=0;

while(end == 0)

{

 j=j%n;

 if(flag[j++] == 0)

 i++;

 if((i%3)==0)

  //判断是否报到3,若是,将对应的元素标记为1,象征退出

 flag[j-1]=1;

 end = 1;

  //判断是否还有满足条件的,若数组全部元素为1,则退出循环

 for(k=0;k<n;k++)

 {

  if(flag[k]==0)

   end
= 0;

 }

}

printf("the last one is %d\n",j); //最后一个退出的就是最后留下的

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐