b[ ]数组用来记录元素在a[ ]数组中的下标
#include <string.h>
#include <stdlib.h>
#include <iostream>
void Combine(int n,int r,char a[],int b[],int R)
{
if(r==0)
{
int i=0;
while(i<R)
{
printf("%c",a[b[i++]]);
}
printf("\n");
}
else
{
int j;
for(j=n;j>=r;j--)
{
b[r-1]=j-1;
Combine(j-1,r-1,a,b,R);
}
}
}
int main()
{
char str[]="abcd";
int i=strlen(str);
int b[i];
for(int j=1;j<=i;++j)
Combine(i,j,str,b,j);
}