约瑟夫杀人游戏
来源:互联网 发布:淘宝购物车怎么付款 编辑:程序博客网 时间:2024/06/16 02:21
据说着名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人 开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。
然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。
现在我们求的是n个人,数到5的被枪毙,最后活下来一个人
public class jsoeplus { public static int N = 20; public static int M = 5;//数到M就咔擦一个人 class Node{ int val;//下标 Node next; public Node(int val){ this.val = val; } } public void killNode(){ Node header = new Node(1);//第一个结点 Node x = header;//目前被点到人 for(int i = 2;i<=N;i++){ x=(x.next = new Node(i)); } x.next = header;//头尾相接 System.out.println("被咔擦的顺序为:"); while(x!=x.next){ //至少还有俩人,仍然继续报数,咔嚓 for(int i = 1;i<M;i++){ x = x.next; } System.out.println(x.next.val+"被干掉 "); x.next = x.next.next; } System.out.println("最后这个幸运儿是:"+x.val); } public static void main(String[] args){ jsoeplus jsoeplus = new jsoeplus(); josephus.killNode(); }}
结果:
被咔擦的顺序为:
5被干掉
10被干掉
15被干掉
20被干掉
6被干掉
12被干掉
18被干掉
4被干掉
13被干掉
1被干掉
9被干掉
19被干掉
11被干掉
3被干掉
17被干掉
16被干掉
2被干掉
8被干掉
14被干掉
最后这个幸运儿是:7
阅读全文
0 0
- 杀人游戏-约瑟夫问题
- 约瑟夫杀人游戏
- 约瑟夫问题(杀人游戏)
- 约瑟夫杀人游戏
- 求助约瑟夫环杀人游戏
- hdoj 2211 杀人游戏 【约瑟夫环】
- 类似于约瑟夫环的杀人游戏
- hdu2211 杀人游戏(约瑟夫环)
- 约瑟夫环,杀人游戏(静态循环链表实现)
- 数据结构程序设计——约瑟夫双向生死杀人游戏
- 杀人游戏
- 杀人游戏
- 杀人游戏的玩法
- 什么是杀人游戏
- 杀人游戏攻略
- SOA杀人游戏
- SOA杀人游戏
- 有感于杀人游戏
- C
- 凑算式----蓝桥杯
- 排序-交换类排序-快速排序、归并排序、冒泡排序
- Netty学习笔记(三) ChannelPipeline和ChannelHandler
- brew link sip出错
- 约瑟夫杀人游戏
- 关于网上外卖配送我们还能做什么?(上)
- 15-spring的事务管理(注解实现)
- 输入优化
- elasticsearch入门学习备忘
- java网络编程之AIO/NIO2.0(三)
- 静态结构模型 动态行为模型
- HTML引入CSS的三种方式
- Android Menu用法全面讲解