时间:2014-02-15所属栏目: PHP/PHP框架 来源: 未知 热度:
有5小我私人偷了一堆苹果,筹备在第二天禀赃。晚上,有一人遛出来,把全部菜果分成5份,可是多了一个,随手把这个扔给树上的猴了,本身先拿1/5藏了。没想到其他四人也都是这么想的,都如第一小我私人一样分成5份把多的那一个扔给了猴,偷走了1/5。第二天,各人分赃,也是分成5份多一个扔给猴了。最后一人分了一份。问:共有几多苹果?
PHP代码如下:
for ($i = 1; ; $i++)
{
if ($i%5 == 1) {
//第一小我私人取五分之一,还剩$t
$t = $i - round($i/5) - 1;
if($t % 5 == 1)
{
//第二小我私人取五分之一,还剩$r
$r = $t - round($t/5) - 1;
if($r % 5 == 1)
{
//第三小我私人取五分之一,还剩$s
$s = $r - round($r/5) - 1;
if($s % 5 == 1)
{
//第四小我私人取五分之一,还剩$x
$x = $s - round($s/5) - 1;
if($x % 5 == 1)
{
//第五小我私人取五分之一,还剩$y
$y = $x - round($x/5) - 1;
if ($y % 5 == 1) {
echo $i;
break;
}
}
}
}
}
}
}
一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后头再开始数,再数到第m只,在把它踢出去…,云云不断的举办下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模仿此进程,输入m、n, 输出最后谁人大王的编号。
function king($n, $m){
$monkeys = range(1, $n);
$i=0;
$k=$n;
while (count($monkeys)>1) {
if(($i+1)%$m==0) {
unset($monkeys[$i]);
} else {
array_push($monkeys,$monkeys[$i]);
unset($monkeys[$i]);
}
$i++;
}
return current($monkeys);
}
$a = king(5, 2);
var_dump($a);
汉诺塔(又称河内塔)题目是印度的一个迂腐的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,别的一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,划定可操作中间的一根棒作为辅佐,但每次只能搬一个,并且大的不能放在小的上面。解答功效请本身运行计较,措施见尾部。面临复杂的数字(移动圆片的次数)18446744073709551615,看来,众僧们耗尽毕生精神也不行能完成金片的移动。
其后,这个传说就演变为汉诺塔游戏:
1.有三根杆子A,B,C。A杆上有多少碟子
2.每次移动一块碟子,小的只能叠在大的上面
3.把全部碟子从A杆所有移到C杆上
颠末研究发明,汉诺塔的破解很简朴,就是凭证移动法则向一个偏向移动金片:
如3阶汉诺塔的移动:A→C,A→B,C→B,A→C,B→A,B→C,A→C
另外,汉诺塔题目也是措施计划中的经典递归题目。
function hanoi($n,$x,$y,$z){
if($n==1){
echo 'move disk 1 from '.$x.' to '.$z."\n";
}else{
hanoi($n-1,$x,$z,$y);
echo 'move disk '.$n.' from '.$x.' to '.$z."\n";
hanoi($n-1,$y,$x,$z);
}
}
hanoi(3,'A','B','C');
标签:php分苹果, php汉诺塔, php算法, php选猴王