求组合的算法,用递归写的,看看吧,你搞的100个数求8个数的全部组合确实有点恐怖,搞清楚算法就行,不用那么夸张;
#include <stdio.h>
#include <stdlib.h>
void findout(int a[],int n,int m,int r,int q[]);
void main()
{
int n,r;int *p,*q;
printf("要找的不同的整数个数:");
scanf("%d",&n);
p=(int*)malloc(n*sizeof(int));
printf("输入%d个不同的整数:",n);
for(int i=0;i<n;i++)
{
scanf("%d",&p[i]);
}
printf("输入要找元素组合的个数:");
scanf("%d",&r);
q=(int *)malloc(sizeof(int));
findout(p,n,r,r,q);
}
void findout(int a[],int n,int m,int r,int q[])
{
for(int i=n;i>=m;i--)
{
q[m-1]=a[i-1];
if(m>1)
findout(a,i-1,m-1,r,q);
else
{
for(int j=r-1;j>=0;j--)
printf("%d
",q[j]);
putchar('\n');
}
}
}