"펼침"각 캐릭터는 파이프에 의해 분리 된 세그먼트들의 가변 개수 (|
) 등을 갖는다 모든 가능한 하나 개의 문자 조합, 3 개 세그먼트에 대해 다음 "알고리즘은"훌륭하게 작동합니다문자열 I 문자열의 집합을
$result = array();
$string = explode('|', 'abc|b|ac');
foreach (str_split($string[0]) as $i)
{
foreach (str_split($string[1]) as $j)
{
foreach (str_split($string[2]) as $k)
{
$result[] = implode('|', array($i, $j, $k)); // more...
}
}
}
print_r($result);
출력 :
$result = array('a|b|a', 'a|b|c', 'b|b|a', 'b|b|c', 'c|b|a', 'c|b|c');
분명히, 3 개 이상의 세그먼트의 경우 코드가 매우 복잡해지기 시작합니다. 점점 더 많은 내부 루프를 추가 (확인)해야하기 때문입니다. 나는 역동적 인 해결책을 찾으려고 노력했지만 모든 세그먼트 (개별 및 전체)에 대해 올바른 조합을 생성하는 방법을 파악할 수는 없습니다. 또한 일부 조합 전략 소스 코드를 살펴 보았지만 여러 세그먼트 조합을 결합 할 수는 없습니다.
누구든지 올바른 방향으로 나를 가리킬 수 있다면 고맙습니다. 구조에
주문의 중요도는 어느 정도입니까? 아니면 모든 조합을 생성하는 것만으로도 괜찮습니까? – NullUserException
@NullUserException : 각 세그먼트의 순서가 중요합니다. 특정 세그먼트에서 각 문자가 나타나는 순서는 ofc가 중복되지 않는 한 부적절합니다. –