龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

一个游戏的解答

时间:2014-07-22 14:51来源: 作者: 点击:
分享到:
游戏:span style=color:#000000;font-family:lucida Grande, Verdana;font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:23px;orphans:2;text-align:-webkit-auto;text-indent:0px;text-transf
游戏: 一场作战中,64个人被捉住了,敌方决定按一种方式处理他们,最后剩下的那个人可以活命。该方式为:给所有人编数字号,然后围成一个圈,先杀一号,每隔一个杀一人,直至只剩下一人。杰克果断站在了一个位置上,并最终成功活了下来,请问,他是几号?
<?php
$arr = array();
// 初始化
for ($i = 1; $i <= 64; $i ++) {
    $j = ($i == 1) ? 64 : ($i - 1);
    $k = ($i == 64) ? 1 : ($i + 1);
    $arr['p' . $i] = array($j, $k);
}
// 开始Kill
$i = 1;
while (count($arr) > 1) {
    $p = $arr['p' . $i];
    unset($arr['p' . $i]);
    $j = $p[0];
    $k = $p[1];
    $arr['p' . $j][1] = $k;
    $arr['p' . $k][0] = $j;
    $i = $arr['p' . $k][1];
}
// 看看还剩谁
print_r($arr);

// 结果:64
?>
精彩图集

赞助商链接