java语言写简单约瑟夫环_java实现约瑟夫环 这里使用List,很简单

约瑟夫环的背景故事:

著名犹太历史学家 Josephus的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲在一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。问题是,给定了总人数n和报数值m,一开始要站在什么地方才能避免被处决?Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。

java代码如下

/**

* 约瑟夫环

* @param list 所有人,从1~41编号

* @param m 报数到m的人自杀

*/

public static void yuesf(List list,int m){

int i = 0;

while (list.size()>0){

i++;

if(i%m!=0){

list.add(list.remove(0));

}else{

System.out.println("自杀的人是" + list.get(0));

list.remove(0);

}

}

}

运行的结果是:

自杀的人是3

自杀的人是6

自杀的人是9

自杀的人是12

自杀的人是15

自杀的人是18

自杀的人是21

自杀的人是24

自杀的人是27

自杀的人是30

自杀的人是33

自杀的人是36

自杀的人是39

自杀的人是1

自杀的人是5

自杀的人是10

自杀的人是14

自杀的人是19

自杀的人是23

自杀的人是28

自杀的人是32

自杀的人是37

自杀的人是41

自杀的人是7

自杀的人是13

自杀的人是20

自杀的人是26

自杀的人是34

自杀的人是40

自杀的人是8

自杀的人是17

自杀的人是29

自杀的人是38

自杀的人是11

自杀的人是25

自杀的人是2

自杀的人是22

自杀的人是4

自杀的人是35

自杀的人是16

自杀的人是31

很明显,最后两个人是16和31,说明程序是正确的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值