¶
Backtracking 기 고 구 까 , Case-by-case .
cases 결과 기 기 각각 3 기 .
cases 결과 기 기 각각 3 기 .
그 기 cases 결 .
기 구 , cases 각각 게 계 DB , 경 Backtracking ?
¶
~php
<?
$s = new survive();
$s->to_right();
class survive
{
var $left, $right;
function __construct()
{
$this->left = array("canni" => 3, "missi" => 3);
$this->right = array("canni" => 0, "missi" => 0);
}
function to_right()
{
if($this->left[canni]==$this->left[missi]&&$this->left[canni]==3) $this->ferry(1,1);
elseif($this->left[canni]<>$this->left[missi]&&$this->left[canni]>1) $this->ferry(2,0);
else $this->ferry(0,2);
$this->to_left();
}
function to_left()
{
if($this->right[canni]==$this->right[missi]&&$this->right[canni]==2) $this->ferry(-1,-1);
elseif($this->right[canni]==$this->right[missi]) $this->ferry(0,-1);
else $this->ferry(-1,0);
$this->to_right();
}
function ferry($canni, $missi)
{
if($canni>=0&&$missi>=0) echo " {$this->right[canni]}+$canni, 교 {$this->right[missi]}+$missi<br>";
elseif($canni<=0&&$missi<=0) echo " {$this->left[canni]}+".(-$canni).", 교 {$this->left[missi]}+".(-$missi)."<br>";
else die(": $canni, $missi");
$this->left[canni] -= $canni; $this->left[missi] -= $missi;
$this->right[canni] += $canni; $this->right[missi] += $missi;
if(!$this->left[canni]&&!$this->left[missi]) exit();
}
}
?>










