-
반응형1234567891011121314151617181920212223242526272829303132333435#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; // 가장 최근에 뽑힌 수가 저장된 위치 indexif (bucketSize == k )smallest = 0;elsesmallest = 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 결과:
반응형