用递归函数或使用堆栈生成排列组合数。测试用例: 1) {A, B, C, D, E, F, G, H}中任取三个元素的组合数 用c语言写
时间: 2024-05-30 20:14:24 浏览: 28
#include<stdio.h>
void combinationUtil(char arr[], char data[], int start, int end, int index, int r)
{
if (index == r)
{
for (int j = 0; j < r; j++)
printf("%c ", data[j]);
printf("\n");
return;
}
for (int i = start; i <= end && end - i + 1 >= r - index; i++)
{
data[index] = arr[i];
combinationUtil(arr, data, i+1, end, index+1, r);
}
}
void printCombination(char arr[], int n, int r)
{
char data[r];
combinationUtil(arr, data, 0, n-1, 0, r);
}
int main()
{
char arr[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'};
int r = 3;
int n = sizeof(arr)/sizeof(arr[0]);
printCombination(arr, n, r);
return 0;
}
阅读全文