33,027
社区成员




char items[5] = {'a', 'b', 'c', 'd', 'e'};
int slt(char *selected, int i, int s, int n, int k)
{
if (k == 0) {
cout << selected << endl;
return 0;
}
for (int j = s+1; j != n - k + 1 ; j++) {
selected[i] = items[j];
slt(selected, i+1, j, n, k - 1);
}
}
int main()
{
char selected[4];
selected[3] = '\0';
slt(selected, 0, -1, 5, 3);
}
void PrintComb(int n, int k)
{
int a[100];
int i = 0,j = 0;
for (i=0;i<=k;i++)a[i]=i;
a[k]=n;
while (1)
{
for (i=0;i<k;i++)printf("%d",n-a[i]);printf("\t");
for (i=k-1;a[i+1]-a[i]<2;i--)if(i==0)return;
for (a[i]++;i<k-1;i++)a[i+1]=a[i]+1;
}
}
#include <stdio.h>
#define N 50
int a[N];
int AllCombinations(int *a, int n , int t)
{
int j = 0;
a[t] = n;
a[t+1] = 0;
for (int i = 0; i < t; i++)
{
a[i] = i;
}
do
{
int i;
j++;
for (i = t-1 ; i>=0 ; i--)
{
printf ("%d ", a[i]);
}
printf ("\n");
i = 0;
while ( a[i] + 1 == a[i+1] )
{
a[i] = i;
i++;
}
if ( i >= t)
break;
a[i]++;
continue;
}
while (1);
return j;
}
int main()
{
printf ( "T : %i\n", AllCombinations (a, 10, 5 ) );
}