코딩/C언어

공뽑기

런던전통손만두 2019. 9. 17. 15:40
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>
#include <stdlib.h>
 
void pick(char *items, int itemSize, int* bucket, int bucketSize, int k) { //중복 조합
 
    int i, lastIndex, smallest, item;
    if(k == 0 ) { 
        for (i = 0; i < bucketSize; i++) {
            printf("%c ", items[bucket[i]]); 
        }
        printf("\n");
        return;
    } 
    lastIndex = bucketSize - k - 1// 가장 최근에 뽑힌 수가 저장된 위치 index
 
    if (bucketSize == k ) 
        smallest = 0
    else 
        smallest = bucket[lastIndex] + 1// 조합
 
    for(item = smallest; item < itemSize; item++) {
        bucket[lastIndex + 1= item;
        pick(items, itemSize, bucket, bucketSize, k - 1);
    }
}
int main(void)
{
    char items[7= {'A''B''C''D''E''F''G'}; // items는 오름차순으로 정렬되어있다고 가정
    int * bucket, num;
 
    scanf("%d"&num);
    bucket = (int *)malloc(sizeof(int* num);
 
    pick( items, sizeof(items)/sizeof(char), bucket, num, num );
}
cs

 

결과:

반응형