прогрессивная комбинация слов строки

Мне нужно получить прогрессивную комбинацию слов из строки.

Например: «this string» Output: «this string» «this is» «this string» «string» «this» «is» «string»

Вы знаете аналогичный алгоритм? (Мне нужно это на php-языке) Спасибо;)

Это простое решение для вашей проблемы. Я последовательно объединяю каждую строку с остальными в массиве.

$string = "this is a string"; $strings = explode(' ', $string); // print result print_r(concat($strings, "")); // delivers result as array function concat(array $array, $base_string) { $results = array(); $count = count($array); $b = 0; foreach ($array as $key => $elem){ $new_string = $base_string . " " . $elem; $results[] = $new_string; $new_array = $array; unset($new_array[$key]); $results = array_merge($results, concat ($new_array, $new_string)); } return $results; } 

Проверьте, например. http://en.wikipedia.org/wiki/Permutation#Systematic_generation_of_all_permutations для описания алгоритма.