I wanted to show all possible combinations of size 2, size 3 to size N
For example there are 4 words (string):
combinations are possible:
Code:
one two
one three
one four
two three
two four
three four
one two three
one two four
one three four
two three four
one two three four
So we have N = 4 and the number of combinations = 11. It is not interested in forming a combination with 1 word (one, two, three and four).
Here's a solution:
Code:
#include <stdio.h>
#define N 5
void display(int state[], char *t[])
{
int i;
for (i = 0; i < N; i++)
if (state[i])
printf("%s ", t[i]);
puts("" );
}
void part(int h, int state[], char *t[])
{
enum { ABSENT, PRESENT };
if (h < 0)
display(state, t);
else
{
state[h] = ABSENT;
part(h - 1, state, t);
state[h] = PRESENT;
part(h - 1, state, t);
}
}
int main(void)
{
char *t[N] = { "name", "surname", "age", "address", "employment" };
int state[N];
part(N - 1, state, t);
return 0;
}
it displays:
name
surname
name surname
age
name age
surname age
name surname age
address
name address
surname address
name surname address
age address
name age address
surname age address
name surname age address
employment
name employment
surname employment
name surname employment
age employment
name age employment
surname age employment
name surname age employment
address employment
name address employment
surname address employment
name surname address employment
age address employment
name age address employment
surname age address employment
name surname age address employment
How to modify the solution to get the combinations from size 2 and is also sorted (size 2 then 3 then 4 and 5)?
The desired result is obtained:
name surname
name age
name address
name employment
surname age
surname address
surname employment
age address
age employment
address employment
name surname age
name surname address
name surname employment
name age address
name age employment
name address employment
surname age address
surname age employment
surname address employment
age address employment
name surname age address
name surname age employment
name surname address employment
name age address employment
surname age address employment
name surname age address employment
Can you help me?
Bookmarks