【发布时间】:2010-05-30 14:59:23
【问题描述】:
这是我在这里的第一个问题,我希望你能帮助我..
我试图通过三种搜索方式(BFS-DFS-IDS)找到河内塔问题的解决方案,因此我使用由 5 个变量定义的“状态”类 whitch,如下所示:
类状态{
var $tower1 = array(); var $tower2 = array(); var $tower3 = array(); var $depth; var $neighbors = array();
它还有很多功能,其中之一是 getneighbors(),它应该用状态邻居填充数组 $neighbors,它们来自“状态”类型
这里是函数:
函数getneighbors()
{
$temp=$this->copy();
$neighbor1= $this->copy();
$neighbor2= $this->copy();
$neighbor3= $this->copy();
$neighbor4= $this->copy();
$neighbor5= $this->copy();
$neighbor6= $this->copy();
if(!Empty($temp->tower1))
{
if(!Empty($neighbor1->tower2))
{
if(end($neighbor1->tower1) < end($neighbor1->tower2))
{
array_unshift($neighbor1->tower2,array_pop($neighbor1->tower1));
array_push($neighbors,$neighbor1);
}}
else
{
array_unshift($neighbor1->tower2, array_pop($neighbor1->tower1));
array_push($neighbors,$neighbor1);
}
if(!Empty($neighbor2->tower3))
{
if(end($neighbor2->tower1) < end($neighbor2->tower3))
{ array_unshift($neighbor2->tower3, array_pop($neighbor2->tower1));
array_push($neighbors,$neighbor2);
}}
else
{
array_unshift($neighbor2->tower3,array_shift($neighbor2->tower1));
array_push($neighbors,$neighbor2);
}
}
if(!Empty($temp->tower2))
{
if(!Empty($neighbor3->tower1))
{
if(end($neighbor3->tower2) < end($neighbor3->tower1))
{ array_unshift($neighbor3->tower1,array_shift($neighbor3->tower2));
array_push($neighbors,$neighbor3);
}
}
else
{
array_unshift($neighbor3->tower1,array_shift($neighbor3->tower2));
array_push($neighbors,$neighbor3);
}
if(!Empty($neighbor4->tower3))
{
if(end($neighbor4->tower2) < end($neighbor4->tower3))
{ array_unshift($neighbor4->tower1,array_shift($neighbor4->tower2));
array_push($neighbors,$neighbor4);
}
}
else{
array_unshift($neighbor4->tower3,array_shift($neighbor4->tower2));
array_push($neighbors,$neighbor4);
}
}
if(!Empty($temp->tower3))
{
if(!Empty($neighbor5->tower1))
{
if(end($neighbor5->tower3) < end($neighbor5->tower1))
{array_unshift($neighbor5->tower1,array_shift($neighbor5->tower3));
array_push($neighbors,$neighbor5);
}
}
else{
array_unshift($neighbor5->tower1,array_shift($neighbor5->tower3));
array_push($neighbors,$neighbor5);}
if(!Empty($neighbor6->tower2))
{
if(end($neighbor6->tower3) < end($neighbor6->tower2))
{ array_unshift($neighbor6->tower2,array_shift($neighbor6->tower3));
array_push($neighbors,$neighbor6);
}}
else{
array_unshift($neighbor6->tower2,array_shift($neighbor6->tower3));
array_push($neighbors,$neighbor6);}
}
return $neighbors;
}
注意 toString 和 equals 以及 copy 也被定义了
现在的问题是,当我调用 getneighbors() 时,它返回一个空的 $neighbors 数组
你能告诉我问题吗?
【问题讨论】:
-
查看更大的声明会很有帮助。
getneighbors()我在上课吗?什么级别?以上 5 个变量在哪里定义?它们是类变量还是全局变量?编辑:我看到上面的类{},错过了。