约瑟夫环
有17个人围成一个圈,编号是0~16,从0号的人开始从1开始报数,凡报到3的倍数的人离开圈子,然后再数下去,直到最后只剩一个人为止。输出最后剩下的一个人(输出此人原来的位置编号)。 --------------------编程问答-------------------- 这个约瑟夫环的推导公式:直接往里面套就可以得出结果了.
--------------------编程问答-------------------- 使用递归很简单 --------------------编程问答-------------------- 怎么我这边不显示你给的那个推导公式呀? --------------------编程问答--------------------
所以你要推导啊 --------------------编程问答-------------------- 这个问题最好是找约瑟夫本人解决。 --------------------编程问答-------------------- 自己写一个循环链 17个人的话 循环16 次就好了
先写个类 对象有value 和link
value 你自己随便放东西 放每人的编号最好
link 要=下一个对象
声明一个 head 指向第一个 声明一个point 指向当前节点 初始化指向第一个
把这个链 环起来 每三个就Remove掉一个 最后剩下的就是 也可以 point.link==point.link.link 就说明剩下一个了
这是纯C数据结构的算法 不是最优的 但是却是最贴近人思维方式的方法 --------------------编程问答-------------------- http://hi.baidu.com/gghao/blog/item/3aa7a7013f4d4b001d9583ee.html
补充:.NET技术 , C#