从6个数字任选4个组合

来源:互联网 发布:淘宝店铺美工主管职责 编辑:程序博客网 时间:2024/05/01 14:20

草稿:

for(i=0,i<3



result[3]=0


递归


i=1,i<4  count==3


result[2]=1


递归


i=2,i<5  count==2


result[1]=2


递归  


i=3,i<6  count==1  i=4;i<6   i=5;i<6


result[0]=3     result[0]=4    result[0]=5
  

输出



思路:

1.假设取出A,从剩下的元素取出B,再从剩下的元素取出C,以此类推

2.从小到大取,若数组没有排序,最好进行排序,如果取出A,若再取比A小的数,则会重复

3.把组合的result存在一个result数组中,每4次输出一次


#include <stdio.h>  int main()  {      int arr[]={1,2,3,4,5,6};      int result[4];      solve(arr,0,result,4,4,sizeof(arr)/sizeof(int));  }//arr为原数组//start为起始遍历位置//count起辅助计数作用//num为多少一组//arr_len为数组的长度 void solve(int *arr,int start,int *result,int count,int num,int arr_len){    int i;   for(i=start;i<arr_len-count+1;i++)   {       result[count-1]=i;       if(count-1==0)       {   int j;           for(j=num-1;j>=0;j--)            printf("%d ",result[j]+1);            printf("\n");       }       else       solve(arr,i+1,result,count-1,num,arr_len);   }}




1 0
原创粉丝点击