原題:
無意中看到這個題,最近php用的比較多,就用php寫了乙個,當然這個還不完全,只需要從所有路徑中求出最短的就可以了
測試例子:
$a = 'hit';
$b = 'cog';
$dict = array("hot","dot","dog","lot","log");
$change[0] = $a;
getchange($change, $b, $dict, 0);
使用回溯法求解,遍歷所有可能的情況,其中change()函式的作用是判斷兩個字串是否可以改變乙個字元而相互轉換。
<?php
/*** 獲取所有可行轉化路徑
* @param array $change 儲存轉化路徑
* @param string $b 目標字串
* @param array $dict 詞典
* @param int $i
*/function getchange($change, $b, $dict, $i)
if (change($change[$i], $b))
}echo $b . '
'; return;
} for ($k = 0; $k < count($dict); $k++)
}if ($j > $i)
}} }
/*** 比較兩個字串是否只相差乙個字元
* @param string $a
* @param string $b
*/function change($a, $b)
$count = 0;
for ($i = 0; ($i < strlen($a)) && ($count <= 1); $i++)
}if ($count > 1)
return true;
}?>
演算法題 猴子吃桃 解
剛開始學c語言,在書上看見了道演算法題,嘗試解了下 題目 猴子第一天摘了若干個桃子,當即吃了一半,還不解饞,又多吃了乙個 第二天,吃剩下的桃子的一半,還不過癮,又多吃了乙個 以後每天都吃前一天剩下的一半多乙個,到第10天想再吃時,只剩下乙個桃子了。問第一天共摘了多少個桃子?思路 通過猴子第十天只剩乙...
PHP經典演算法題
面試題 演算法題 1 插入排序 一維陣列 基本思想 每次將乙個待排序的資料元素,插入到前面已經排好序的數列中的適當位置,使數列依然有序 直到待排序資料元素全部插入完為止。示例 初始關鍵字 49 38 65 97 76 13 27 49 j 2 38 38 49 65 97 76 13 27 49 j...
幾個PHP演算法題
有5個人偷了一堆蘋果,準備在第二天分贓。晚上,有一人遛出來,把所有菜果分成5份,但是多了乙個,順手把這個扔給樹上的猴了,自己先拿1 5藏了。沒想到其他四人也都是這麼想的,都如第乙個人一樣分成5份把多的那乙個扔給了猴,偷走了1 5。第二天,大家分贓,也是分成5份多乙個扔給猴了。最後一人分了乙份。問 共...