2014-12-10 2 views
1

문자열 배열에서 중복/redundants을 제거 ["ab c" "cd e" "f g h" "ab" "c"] 가 지금은 두 개의 항목이 하나 개의 항목을 만들기 위해 결합하는 경우, 즉 ["cd e" "f g h" "ab" "c"]로 변경하도록 방법이에서 요소를 제거 할 말을 I 해당 항목을 제거하십시오. 항목이 다른 항목의 조합 인 경우 제거하십시오., 내가 문자열 배열을

무차별 대입을 사용하는 알고리즘이 있습니까?

+0

남은 요소 수를 최대화 하시겠습니까? 예를 들어 [ "f", "f", "g", "h"] 결과는 [ "f", "g", "h"]가됩니다. – pepOS

+0

예. 요소 최소화, –

+0

복잡성 등급이 동일하게 유지 되더라도 계산 속도를 높이는 길이로 배열을 정렬 할 수 있습니다. –

답변

2

해결하려고하는 문제는 Set packing으로 알려진 NP 완전 문제입니다. 링크에서 제안 된 솔루션을 사용하려면 먼저 유니버스를 정의해야합니다. 귀하의 예를 따르면 될 것이다 :

U=["ab","c","cd","e","f","g","h"]

당신은 이미 당신의 세트를 가지고 :
당신은 C의 모든 설정이 가능한 가장 큰 컬렉션을 쌍으로 연결되지 않은이되도록 SC 부분 집합을 발견 할 S=["ab c" "cd e" "f g h" "ab" "c"]

.

아직 작업해야하지만 적어도 시작 단계입니다.

관련 문제