прогрессивное словосочетание строки - PullRequest
3 голосов
/ 21 февраля 2011

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

например. "это строка" Вывод: "это строка" "это" "эта строка" "Строка" "этот" "является" "Строка"

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

Ответы [ 2 ]

4 голосов
/ 21 февраля 2011

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

$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;
}
1 голос
/ 21 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...