杀人游戏Java代码的实现

       前段时间,公司同事问了一个杀人游戏感觉还是挺有意思的,对咱们程序猿来说,只要有规律,一切皆可以用代码来表示(屌丝程序猿的想法172416_EYyD_1471093.png)。

题目是这样的:有1000名罪犯,对他们进行顺序编号(从1开始)。首先,法官要求偶数号的人站出来杀掉。然后在不打乱原有顺序情况下对他们进行顺序编号。再然后法官让奇数号的人站出来杀死。一次类推。问:最后一个人是原先1000人中的几号?(不要问我法官为什么要这样杀人172429_acO3_1471093.png)下面给出个人代码,不吝赐教。

int tag = 1;//第几次杀人
int num = 1000;//罪犯人数
ArrayList<String> list = new ArrayList<String>();//存放罪犯的list集合
ArrayList<String> list0 = new ArrayList<String>();//要杀掉罪犯代号,用于从list中移除
list0.add("0");
for (int i = 1; i <= num; i++) {//对罪犯进行编号
    list.add(i + "");
}
while (true) {//把要杀掉的人置为0
    if (tag % 2 == 1) {//
        for (int i = 1; i <= list.size(); i++) {
            if (i % 2 == 0) {
                list.set(i - 1, 0 + "");
            }
        }
    } else {
        for (int i = 1; i <= list.size(); i++) {
            if (i % 2 == 1) {
                list.set(i - 1, 0 + "");
            }
        }
    }
    list.removeAll(list0);//杀掉罪犯,重新编号
    tag ++;//杀人次数加1
    if (list.size() == 1) {//当只剩下一个人的时候输出这个号码
    System.out.print(list.get(0).toString());
    return;
    }
}


转载于:https://my.oschina.net/u/1471093/blog/504574

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值