黑马程序员技术交流社区
标题: 关于基础测试中 耶稣门徒 的问题 [打印本页]
作者: coding_wang 时间: 2015-9-1 18:11
标题: 关于基础测试中 耶稣门徒 的问题
题目是:耶稣有15个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:15人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。
我的解法是:
- #include<stdio.h>
- int main()
- {
- int stu[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
- int left=15;
- int j=0;
- for(int count=1;left>1;count++)
- {
- while(stu[j]==0) //剔除出局的人,找出下一个被数的人
- {
- j++;
- if(j==15)
- j=0;
- }
- if(j==15) //防止数组下标溢出
- j=0;
-
- if(count==3) //使被数到3的人出局
- {
- stu[j]=0;
- count=0;
- left--;
- }
- j++; //下一个
- }
- for(int i=0;i<15;i++)
- {
- if(stu[i]!=0)
- printf("The badguy is number %d\n",i+1);
- }
- return 0;
- }
复制代码
总觉得这么解有点笨 请大神指导下更简便一点的方法
作者: 15095185209 时间: 2015-9-1 21:18
我也是来学习的,望大神 讲解
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |