黑马程序员技术交流社区
标题: 耶稣问题 求助大神 ,给点思路 谢谢啦 [打印本页]
作者: wg592930 时间: 2015-5-7 19:53
标题: 耶稣问题 求助大神 ,给点思路 谢谢啦
耶稣有15个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:15人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。(C语言)
作者: 仰望的繁华 时间: 2015-5-7 22:42
http://v.ku6.com/show/TXV_tn2WisSr2H2s4k7jEw...html
送你个视频,我全靠这视频才弄懂的。
虽然不是最优的方法,但确实讲的比较容易理解。
作者: cui0wei0 时间: 2015-5-7 23:31
定义一个数组.
加一个循环, 用剩余人数作控制条件,剩余人数为1的时候就结束.
报数可以用一个计数器,%3==0就把数组中的元素赋予特定的值, 比如0.
最后剩下的一个人不为0, 再找出下标+1就是第几个人.
应该结果是5
作者: wanjiadenghuo 时间: 2015-5-7 23:59
#include<stdio.h>
int main()
{
int people[15] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int count = 0;//用来记录报数
int number = 15;//记录活着的人数
int i = 0;//记录第几个人正在报数
while (number > 1)
{
if (people[i] != 0)
{
count++; //如果a[i ]没有被剔除掉,报数有效
}
if (count == 3)
{
people[i] = 0;//剔除掉,
count = 0;//报数清零
number--;//存活人数减一
}
i++;//记录报数的下一个人
if (i == 15)
{
i = 0;// 当超出范围时,立即将报数人数置为第一人
}
}
for (int i = 0; i < 15; i++)
{
if (people[i] > 0)
{
printf("叛徒是第%d人 ", people[i]);
}
}
}
可以仔细琢磨下 这种把人数存放数组的方法代码和思路都能通俗易懂
作者: 梦初醉 时间: 2015-5-8 00:34
主要还是思想
作者: ydy96315 时间: 2015-5-8 06:02
这个是基础测试还是入学测试题啊
作者: wg592930 时间: 2015-5-8 06:51
谢谢你啊 非常感谢
作者: wg592930 时间: 2015-5-8 06:52
这个是基础测试题, 没有思路
作者: wg592930 时间: 2015-5-8 06:54
谢谢 大神啊 我再研究研究
作者: cogddo 时间: 2015-5-8 08:54
定义一个数组,,给每个元素都赋值为0,,然后循环遍历这个数组,,知道剩下一个人,,其中,数到3,就给当前数组元素赋值为非0,(比如给1)然后报数归零,剩下的人数减一,,一次类推。
作者: ios专用 时间: 2015-5-8 19:44
感谢,这道题我也不会
作者: Phoenix21 时间: 2015-8-17 14:13
我看了看我也不会,我还是继续学习吧,楼主加你为好友啊
作者: tangbinbin 时间: 2015-8-17 16:45
我也抽到了这一题,做完了,给你看下详细的解题代码分析
作者: tangbinbin 时间: 2015-8-17 16:47
#include <stdio.h>
#define N 15
int main ()
{
int a[15];
for (int i=0;i<15;i++) //给门徒进行编号
{
a[i]=i+1;
}
int number = 15; //记录当前人数
int count = 0; //记录报数
i = 0;
while (number > 1) //直到一人时退出循环
{
if (a[i] != 0) //没有人被剔除掉,报数有效
{
count++;
}
if (count == 3) //当有人报数为3时,退出的人计为0,报数清零,存活人数减1
{
a[i] = 0;
count = 0;
number--;
}
i++; //记录报数的下一个人
if (i == 15) //当15人报数完毕,立即将报数人数置为第一人
{
i = 0;
}
}
for ( i = 0; i< 15; i++)
{
if (a[i] > 0) //最后剩下的报数不能置0的人即为叛徒
printf("出卖耶稣的人是第%d个门徒", a[i]);
}
return 0;
}
作者: wg592930 时间: 2015-8-17 17:23
谢谢啦 非常感谢您的回复
作者: zhangxiaodonghi 时间: 2015-8-17 17:44
共同学习 感谢各位大神
作者: 红双喜 时间: 2015-8-17 18:41
视频讲的不错啊。
作者: 408205555 时间: 2015-8-17 19:57
长知识了。
作者: 408205555 时间: 2015-8-17 19:58
楼主还遇到什么面试题了?
面试题总体感觉难度怎么样?
不能所有笔试题都和这道题一样难度吧?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |