2013-10-05 6 views
1

문자열의 모든 하위 집합 목록에 프로그램을 작성하고 있습니다. 내 프로그램 (아래에 있음)은 "abcd"의 하위 집합을 다음 순서로 나열합니다.이 하위 집합의 순서는 무엇입니까?

'' 'd' 'c' 'cd' 'b' 'bd' 'bc' 'bcd' 'a' 'ad' 'ac' 'acd' 'ab' 'abd' 'abc' 'abcd' 

올바른 내용입니다. 그러나, 레퍼런스 솔루션은 그들을 순서대로 나열

'' 'a' 'b' 'ab' 'c' 'ac' 'bc' 'abc' 'd' 'ad' 'bd' 'abd' 'cd' 'acd' 'bcd' 'abcd' 

내 질문은 : 이 순서의 이름은 무엇인가?

이 참고로, 여기 내 프로그램입니다 :

import java.util.ArrayList; 
import java.util.Collections; 

/** 
    This class generates subsets of a string. 
*/ 
public class SubsetGenerator 
{ 
    public static ArrayList<String> getSubsets(String word) 
    { 
     ArrayList<String> result = new ArrayList<String>(); 
     //fill out 
     //result.add(""); 
     if(word.length() == 0) 
     { 

      result.add(""); 
     } 

    else 
    { 
     String notFirst = word.substring(1); 
     ArrayList<String> smaller = getSubsets(notFirst); 
     //System.out.println(smaller); 
     char first = word.charAt(0); 

     result.addAll(smaller); 

     for(String i: smaller) 
     { 
      result.add(first+i); 
     } 
    } 


    //simpleSubsets = getSubsets(simple+word.charAt(0)); 

    // Form a simpler word by removing the first character 
    // fill out 

    // Generate all subsets of the simpler word 
    // fill out 

    // Add the removed character to the front of 
    // each subset of the simpler word, and 
    // also include the word without the removed character 
    // fill out 

    // Return all subsets 
    return result; 
    } 
} 
+0

구체적인 순서는 무엇입니까? 당신의 결과는 무엇을 의미합니까? 올바른 출력 결과가 올바른 이유는 무엇입니까? –

답변

1

그들은 당신이 진 오프 계산과에 숫자 0과 1을 번역하면 당신이 얻을 것 순서가 생산하고 있다는 주문, b, c 및 d :

d c b a | set 
--------+---- 
0 0 0 0 | {} 
0 0 0 1 | {a} 
0 0 1 0 | {b} 
0 0 1 1 | {a, b} 
0 1 0 0 | {c} 
0 1 0 1 | {a, c} 
0 1 1 0 | {b, c} 
0 1 1 1 | {a, b, c} 
1 0 0 0 | {d} 
1 0 0 1 | {a, d} 
1 0 1 0 | {b, d} 
1 0 1 1 | {a, b, d} 
1 1 0 0 | {c, d} 
1 1 0 1 | {a, c, d} 
1 1 1 0 | {b, c, d} 
1 1 1 1 | {a, b, c, d} 

희망이 있습니다.

+0

프로그램을 수정했지만이 이진 순서가 작동하는 방식에 대해 머리를 감쌀 수 없습니다. 나는 0과 1의 패턴을 보지 못합니다. 좀 더 자세히 설명해 주시겠습니까? 나는 이런 타입의 주문에 대해 아주 새로운 것입니다. –

+0

Nevermind 방금 Discrete Math 클래스에서 이것을 배웠다는 것을 기억했습니다. 고마워. –

+0

"바이너리 정렬은 10 진수 정렬과 같습니다. 실제로 8 개의 손가락이 누락 된 경우입니다." - 톰 레러 –