30/09/2018, 17:06
[Thuật toán nhỏ] Liệt kê hoán vị 1 chuỗi số
- Input: Chuỗi kí tự k = ‘a,b,c,…’
- Output: Các hoán vị của k
PHP code:
function hoanvi( $dayso ) { $p = ',';
$dayso = is_array( $dayso ) ? $dayso : explode( $p, $dayso );
if( count( $dayso ) == 1 ) { $result = $dayso; } elseif( count( $dayso ) == 2 ) { $result = [ $dayso[0] . $p . $dayso[1], $dayso[1] . $p . $dayso[0]]; } else { foreach( $dayso as $k => $v ) { unset( $dayso[ $k ] ); $dayso1 = array_values( $dayso );
foreach( hoanvi( $dayso1 ) as $val ) { $result[] = $v . $p . $val; }
$dayso[ $k ] = $v; } } return $result; } echo 'Total: '. count($hv = hoanvi($_REQUEST['dayso'])).'<br><br>'; echo join('<br>', $hv);
Run: hoanvi.php?dayso=a,b,c,d
Bài liên quan