A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wx_hg1q2t6v 中级黑马   /  2014-12-12 10:33  /  1226 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

耶稣有15个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:
        15人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,
        最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。

7 个回复

倒序浏览
蛮干就是循环链表
投机取巧的话  有个公式。。。。只要三行代码就能解决
回复 使用道具 举报
有公式,也可以模拟,用数组或是循环链表。这道题很经典的
回复 使用道具 举报
。烊了 发表于 2014-12-12 10:47
蛮干就是循环链表
投机取巧的话  有个公式。。。。只要三行代码就能解决

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

表示不会:Q,你有空吗,可以给我讲一下吗:)
回复 使用道具 举报
wx_hg1q2t6v 发表于 2014-12-12 11:15
表示不会,你有空吗,可以给我讲一下吗

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

恩,有点思路了,我先试试,有问题了再问。
谢指点!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马