黑马程序员技术交流社区

标题: 【求指教】来个大神指点下思路........ [打印本页]

作者: wx_hg1q2t6v    时间: 2014-12-12 10:33
标题: 【求指教】来个大神指点下思路........
耶稣有15个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:
        15人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,
        最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。


作者: 。烊了    时间: 2014-12-12 10:47
蛮干就是循环链表
投机取巧的话  有个公式。。。。只要三行代码就能解决
作者: Xwoder    时间: 2014-12-12 10:53
有公式,也可以模拟,用数组或是循环链表。这道题很经典的
作者: wx_hg1q2t6v    时间: 2014-12-12 11:14
。烊了 发表于 2014-12-12 10:47
蛮干就是循环链表
投机取巧的话  有个公式。。。。只要三行代码就能解决

什么公式呢?15个人最后怎么剩一个呢,剩两个啊
作者: wx_hg1q2t6v    时间: 2014-12-12 11:15
Xwoder 发表于 2014-12-12 10:53
有公式,也可以模拟,用数组或是循环链表。这道题很经典的

表示不会:Q,你有空吗,可以给我讲一下吗:)
作者: Xwoder    时间: 2014-12-12 11:20
wx_hg1q2t6v 发表于 2014-12-12 11:15
表示不会,你有空吗,可以给我讲一下吗

搜下:约瑟夫环
作者: 从今以后    时间: 2014-12-12 16:59
可以定义一个数组a[15] = {1, 2, 3, ..., 15};
数组存的就是对应15个人的序号
然后遍历 每遇到三个元素值不为0的元素就把那个元素值改为0  下次遍历到它就不会算到3的计数里了  
相应的把总人数-1 好比退出圈子一个
遍历到尾元素把下标赋值为0 从而循环遍历
直到最后只剩一个元素 也就是最后一人 元素值就是他的序号
作者: wx_hg1q2t6v    时间: 2014-12-12 18:59
从今以后 发表于 2014-12-12 16:59
可以定义一个数组a[15] = {1, 2, 3, ..., 15};
数组存的就是对应15个人的序号
然后遍历 每遇到三个元素值 ...

恩,有点思路了,我先试试,有问题了再问。
谢指点!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2