$arr=['a','b','c','d','e','f'];
從數組$arr中取出3個或4個字元(兩種情況都考慮)組合成新的字元,比如abc,abd,abe,abcd等,同時考慮順序不同的情況,abc和acb視為不同的情況,將新的字元存入數組,
$newArr[]='abc';
$newArr[]='abd';
$newArr[]='abe';
$newArr[]='abcd';
$newArr[]='acbd';
...
怎樣列舉所有的情況?
回複內容:
$arr=['a','b','c','d','e','f'];
從數組$arr中取出3個或4個字元(兩種情況都考慮)組合成新的字元,比如abc,abd,abe,abcd等,同時考慮順序不同的情況,abc和acb視為不同的情況,將新的字元存入數組,
$newArr[]='abc';
$newArr[]='abd';
$newArr[]='abe';
$newArr[]='abcd';
$newArr[]='acbd';
...
怎樣列舉所有的情況?
function dfs($pre, $chars, $arr, $lenArr) { if(!empty($pre) && in_array(strlen($pre), $lenArr)){ $arr[] = $pre; } if(!empty($chars)) { foreach ($chars as $char) { $tempChars = array(); foreach ($chars as $c) { if ($c !== $char) { $tempChars[] = $c; } } $arr = $this->dfs($pre.$char, $tempChars, $arr, $lenArr); } } return $arr;}function get_combine() { $chars = array('a', 'b', 'c', 'd', 'e', 'f'); $combineArray = array(); $combineArray = $this->dfs('', $chars, $combineArray, array(3, 4)); echo count($combineArray).'
'; var_dump($combineArray);}
用遞迴可以實現