#include <stdio.h>
#include <stdbool.h>
void Array(int data[], int data1[], bool flat[], int count, int n)
{
if (n > count)
return;
if (n == count)
{
for (int i = 0; i < count; i++)
printf("%d", data1[i]);
printf("\n");
}
for (int i = 0; i < count; i++)
{
if (!flat[i])
{
flat[i] = true;
data1[n] = data[i];
Array(data, data1, flat, count, (n + 1));
flat[i] = false;
}
}
}
void Group(int data[], int data1[], int data_len, int data1_len, int data_i, int data1_i)
{
if (data_i > data_len)
return;
if (data1_i == data1_len)
{
for (int i = 0; i < data1_len; i++)
printf("%d ", data1[i]);
printf("\n");
return;
}
data1[data1_i++] = data[data_i];
Group(data, data1, data_len, data1_len, data_i + 1, data1_i);
data1_i--;
Group(data, data1, data_len, data1_len, data_i + 1, data1_i);
}
int main()
{
int data[] = {1, 2, 5, 10};
int data1[4] = {0};
bool flat[4] = {0};
for (int i = 0; i < 4; i++)
{
Group(data, data1, 4, i + 1, 0, 0);
}
return 0;
}
>>转载自 C语言实现排序组合
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)