RadarURL

논문
2012.10.22 01:11

nCr[combination] 구현하기

조회 수 8198 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

가 크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

가 크게 작게 위로 아래로 댓글로 가기 인쇄

GetCombination함수에 n, r의 자연수를 입력하면 coll에 조합방식을 문자열로 반환한다.
함수 리턴값은 조합의 개수이다.

GetCombination();
combination();

두 개의 함수를 구현하고 GetCombination을 call~!!


int GetCombination(int n, int r, CStringArray *coll)
{
      int count = 0;

      CString strTemp = L"";
      CString temp = L"";

      int *c= new int[r+1];   // c에 dynamic array를 이용해 입력받은 r값으로 array의 크기정해줌

 for( int i=1;i<r+1;i++)   // s[0]=1,s[1]=2,..........,s[r-1]=r 이런식으로 값을 할당해줌.
 {        // lexicographic order에 따라 첫번째 combination값을 만들어줌
         c[i-1]=i;
 }

 for( int i=0;i<r;i++)
 { 
       temp.Format( _T("%i"), c[i] - 1 );
       strTemp = strTemp + temp;
 }
       coll->Add( strTemp );
       count++;

 int k;
 k=combination(n,r);    // k는 n,r에대해 가질수 있는 총 Combination갯수를 구한 값

 for( int h=2;h<k+1;h++)
 {
      int m=r-1;
      int max_val=n;

  while(c[m]==max_val)
  {
         m=m-1;     // maximumvalue 값을 만족하는 배열 위치보다 -1작은 위치 m을 구함
         max_val=max_val-1;  // 예를들어 n=6 r=4일때 1256 이란 값이 들어오면 5와 6은 while구문
  }       // 내에서 max_value만족 따라서 m=1이란 5,6앞의 2의 배열의 위치 값을 반환함

  c[m]=c[m]+1;    // c[m]에값에 +1을 해준다.
  for(int j=m+1;j<r;j++)  // while구문이 실행될 경우 실행 c[m+1]부터 c[r-1]까지
  {       // 그 앞에 수의 +1값을 자신이 가짐 ex) c[m+1]=c[m]+1. c[m+2]=c[m+1]+1
   c[j]=c[j-1]+1;   // cobination값은 permutation에서 swap을 사용하는것과 같은것이 필요 없다.
  }       // 위의 m의 값을 구한후 그 구한 m을 위치로 갔는 배열 c[m]값 이후로 그 앞에 값의
         // +1씩만 해주만 lexicographic order을 만족하는 combination값이 나옴
  strTemp = L"";
  for(int i=0;i<r;i++)
  { 
   temp.Format( _T("%i"), c[i] - 1 );
   strTemp = strTemp + temp;
  }
  coll->Add( strTemp );
  count++;
 }

 delete [] c;
 return count;
}


int combination(int n, int r)
{
         int i;
         int kup = 1;          // 분자
         int kdown = 1;        // 분모

         for(i=n;i>n-r;i--)    //  분자 계산
             kup *= i;

        for(i=r;i>0;i--)       //  분모에 계산
              kdown *= i;

         return kup/kdown;
}

 

출처 : http://ultragom.tistory.com/entry/nCrcombination-구현하기

?

공부 게시판

공부에 도움되는 글을 올려주세요.

  1. No Image notice by 처누 2003/08/18 by 처누
    Views 2012685 

    [공지] 공부 게시판 입니다.

  2. 카­톡 gusim8003 급전/내구제 (24시문의) 폰테크 소액대출 선불폰 가개통

  3. No Image 04Oct
    by 속삭이는와이번53
    2026/10/04 by 속삭이는와이번53
    in 취업
    Views 5 

    을지로가라오케 010 2817 0845 을지로 가라오케 예약 및 문의

  4. 카_톡 gusim8003 선불유심내구제 (24시문의) 작업대출 선불유심 급한돈 가전내구제

  5. No Image 03Oct
    by 괴랄한재규어89
    2026/10/03 by 괴랄한재규어89
    in 업무
    Views 11 

    강남안마❤️OlO-7593-9850❤️친절문의24시 #강남안마 #강남안마방 #강남클럽안마 #강남클럽식안마 #역삼동안마 #선릉안마 #삼성동안마 #대치동안마 #강남역안마 #논현동안마

  6. 텔ㄹH:@holysim 선불유심내구제 신용불량자대출 신불 회생 파산 소액대출 비대면대출 폰내구제 폰깡 텔레그램:@holysim 가개통 선불유심내구제 정식내구제업체 선불폰삽니다 비상금대출

  7. EMR을 기반으로 DW를 구축한 병원의 CRM 활용 방안 연구 = The Study on a Plan to Activate Customer Relationship Management through Data Warehouse based on Electronic Medical Record of Hospitals

  8. 로그인 구글 드라이브 안 쓰고 시놀로지 드라이브 쓰는 이유, 설정 방법 & 활용팁

  9. 알아두면 좋은 직장인 용어 정리

  10. 국내에서 의사가 되는 로드맵

  11. 병원 의학 용어 정리 - 병원 과별 축약어 (ent, os, ps, gs, np, obgy, cv, NE, ID, er, ur, em, ge, pd, nicu..)

  12. 모달리티(Modality)

  13. [ 개발자 업무 파악 ] SI와 SM의 차이와 하루일과 출처: https://bnitech.tistory.com/19 [코딩몬의 하루:티스토리]

  14. 의과 대학에서 받는 학위의 종류와 과정에 대한 이야기

  15. ARO(Academic Research Organization), CRO(Contract Research Organization) 차이

  16. 계약직 직원 지칭하는 명칭 : 임기제(계약직), 개방형직위, 별정직, 전문직위제, 기간제 등

  17. (자격증) AWS아키 따는 법 -2023

  18. 기술사 학습 루틴

  19. 정보처리기술사 독학 vs 학원

  20. IT 기술사회 정보관리기술사 컴퓨터시스템응용기술사 공개설명회

  21. 정보관리냐? 컴퓨터시스템응용이냐? 선택의 기로에 있다면

Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 12 Next
/ 12


즐겨찾기 (가족)

JAESOO's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너