[算法题]约瑟夫(josephus)环的php玩法
时间:2006-07-03 来源:一地风飞
[整理自喜悦国际村] 没有认真去看,只是觉得有意思,先收集整理一下,有空再消化一下..
原文地址:http://www.phpx.com/happy/thread-119916-1-2.html
约瑟夫(josephus)环是这样的:假设有n个小孩坐成一个环,假如从第一个小孩开始数,如果数到m个小孩,则该小该离开,问最后留下的小孩是第几个小孩?例如:总共有6个小孩,围成一圈,从第一个小孩开始,每次数2个小孩,则游戏情况如下:
小孩序号:1,2,3,4,5,6
离开小孩序号:2,4,6,3,1
最后获胜小孩序号:5
1)
=$n-1)
{
echo $a[$i];
break 2;
}
// 移动数组下标
$i++;
}
}
?>2)
$i - 1, 'next' => $i + 1);
}
$arr[TOTAL_N]['next'] = 1;
$arr[1]['prev'] = TOTAL_N;
$key = 1;
$ct = 1;
while (true) {
echo ('Current Key:' . $key . ' Next Key:' . $arr[$key]['next']);
if ($ct == COUNT_M) {
echo (' ...Current node deleted!');
$ct = 0;
$arr[$arr[$key]['prev']]['next'] = $arr[$key]['next'];
$arr[$arr[$key]['next']]['prev'] = $arr[$key]['prev'];
}
$key = $arr[$key]['next'];
$ct++;
echo ('
');
if ($key == $arr[$key]['next']) {
$last = $key;
break;
}
}
echo ('The last key is ' . $last);
?>3)
1)
{
if($array[$i]==0) //当为0时表明该人没有出局
{
$s++;
if($s==$step) //数的$step个人,让他出局
{
$array[$i]=$con;
$con--;
$s=0;
$exitChar.="$i-";
}
}
if($i==$num)
{
$i=1;
}
else
{
$i++;
}
}
echo "离开小孩序号:$exitChar n";
echo "留下小孩 :".array_search('0', $array);
?>4)
1)
{
for ($i = 0; $i 5)
6)
7)
1) {
$i++;
$x = array_shift($ar);
if($i
原文地址:http://www.phpx.com/happy/thread-119916-1-2.html
约瑟夫(josephus)环是这样的:假设有n个小孩坐成一个环,假如从第一个小孩开始数,如果数到m个小孩,则该小该离开,问最后留下的小孩是第几个小孩?例如:总共有6个小孩,围成一圈,从第一个小孩开始,每次数2个小孩,则游戏情况如下:
小孩序号:1,2,3,4,5,6
离开小孩序号:2,4,6,3,1
最后获胜小孩序号:5
1)
=$n-1)
{
echo $a[$i];
break 2;
}
// 移动数组下标
$i++;
}
}
?>2)
$i - 1, 'next' => $i + 1);
}
$arr[TOTAL_N]['next'] = 1;
$arr[1]['prev'] = TOTAL_N;
$key = 1;
$ct = 1;
while (true) {
echo ('Current Key:' . $key . ' Next Key:' . $arr[$key]['next']);
if ($ct == COUNT_M) {
echo (' ...Current node deleted!');
$ct = 0;
$arr[$arr[$key]['prev']]['next'] = $arr[$key]['next'];
$arr[$arr[$key]['next']]['prev'] = $arr[$key]['prev'];
}
$key = $arr[$key]['next'];
$ct++;
echo ('
');
if ($key == $arr[$key]['next']) {
$last = $key;
break;
}
}
echo ('The last key is ' . $last);
?>3)
1)
{
if($array[$i]==0) //当为0时表明该人没有出局
{
$s++;
if($s==$step) //数的$step个人,让他出局
{
$array[$i]=$con;
$con--;
$s=0;
$exitChar.="$i-";
}
}
if($i==$num)
{
$i=1;
}
else
{
$i++;
}
}
echo "离开小孩序号:$exitChar n";
echo "留下小孩 :".array_search('0', $array);
?>4)
1)
{
for ($i = 0; $i 5)
6)
7)
1) {
$i++;
$x = array_shift($ar);
if($i
相关阅读 更多 +