리 ¶
문를 는데 되는 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(); } } ?>