코딩/C언어

학급임원 뽑기 (중복X)

런던전통손만두 2019. 9. 17. 16:02
반응형
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 people[][20], int itemSize, int* bucket, int bucketSize, int k) { //중복 조합
 
    int i, lastIndex, smallest, item;
    if (k == 0) {
        for (i = 0; i < bucketSize; i++) {
            printf("%s ", people[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(people, itemSize, bucket, bucketSize, k - 1);
    }
}
int main(void)
{
    char people[][20= { "공유""김수현""송중기""지성""현빈" };
    int * bucket, num;
 
    scanf("%d"&num);
    bucket = (int *)malloc(sizeof(int* num);
 
    pick(people, 5, bucket, num, num);
}
cs

 

결과:

 

반응형