CAFE

[6.0]Tip & Tech [인기]

[팁]순열과 조합에서 문자 조합 리스트 작성 방법

작성자whitebono|작성시간10.03.23|조회수967 목록 댓글 6

폼에 텍스트 박스(좀크게, 멀티라인 = 트루), 커맨드 버튼 한개 올려놓으신후 다음 코딩을 붙여넣습니다.

 

Option Explicit: DefObj A-Z

Private Sub Command1_Click()
    Dim Dest$
    Call LS_Combine(3, "", "ABCD", Dest$)
    text1.text =  Dest$
End Sub

Private Sub LS_Combine(SampleSize%, RootIn$, FullSetIn$, Dest$)
Dim L9%, Root$

' --- At bottom - take result and exit
If SampleSize = 0 Then
Dest$ = Dest$ + RootIn$ + vbCrLf
Exit Sub
End If

' --- For each possible Start Letter
For L9 = 1 To Len(FullSetIn$) - SampleSize + 1
' --- Build Root
Root$ = RootIn$ + Mid$(FullSetIn$, L9, 1)
' --- Handle Residue
Call LS_Combine(SampleSize% - 1, _
Root$, _
Mid$(FullSetIn$, L9 + 1), _
Dest$)
Next

End Sub

위 코딩을 붙여넣으신후 실행을 해서 버튼을 누르면 결과가 텍스트박스에 들어갑니다.

뭐냐하면

ABCDE 라는 문자열이 있을때 저 5글자에서 3글자로 조합할수 있는방법이 순열과 조합이라는 두가지 방법이 있습니다.

순열은 

ABC, BCD, CDE 같이 3개씩 조합을 하는데 ABC 와 ACB, BCA, CAB 등 같은 문자가 중복되었지만 순서만 틀리면

다르다고 판단 무조껀 숫자를 세는것이 순열입니다.

하지만 조합은 순열과는 틀리게 중복되는 문자열 집합은 허용하지 않습니다.

 ABC 와 ACB, BCA, CAB 등은 무조껀 1건으로 본다는 것이죠.

 

따라서 항상 조합 보다는 순열이 결과값이 많습니다.

로또의 경우가 조합을 사용하는건데요.

45개의 숫자를 조합으로 만들면 8백만건 이상이 나온다죠.

예를 들어, 내가 로또를 1,2,3,4,5,6 을 찍었는데 당첨번호가 6,5,4,3,2,1 이 나와도

제가 1등에 당첨될수 있는것이 바로 조합입니다.

 

위 코딩은 순열과 조합중에 조합을 어떻게 만드는지를 보여주는 코딩입니다.

 

조합이 총 몇건이 나오는지는 웹에 많이 돌아다니는데

이 소스처럼 목록이 직접 나오는건 찾기 힘들더군요.

 

도움이 되셨으면 합니다.

 

순열(permutation, permutations), 조합(Combination, Combinations) 등으로 이 게시물을 찾을 수 있습니다.

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자바 람남 | 작성시간 10.12.27 감사합니다
  • 작성자바 람남 | 작성시간 10.12.27 감사합니다
  • 작성자바 람남 | 작성시간 10.12.27 감사합니다
  • 작성자바 람남 | 작성시간 10.12.27 잘봣습니다
  • 작성자바 람남 | 작성시간 10.12.27 잘봣습니다
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼