指定整数数组中输出和为一整数的所有组合

来源:互联网 发布:网络预约汽车运输证 编辑:程序博客网 时间:2024/05/16 09:06

题目:编写一个函数,在数组a[10] = {1,3,5,7,9,11,13,15,17}中输出和为25的所有整数组合


思想:递归,探底一种情况后返回前一种状态。

代码:


  1. #include <stdio.h>  
  2. #include <string.h>  
  3.   
  4. char a[10] = {1,3,5,7,9,11,13,15,17};  
  5. char b[10];  
  6.   
  7. void f(int n)  
  8. {  
  9.     static int n1 = 0;  
  10.     static int n2 = -1;  
  11.     int i;  
  12.     int j;  
  13.       
  14.     for(i = n1;i < 10;i++)  
  15.     {  
  16.         if(n > a[i])  
  17.         {  
  18.             n1 = i+1;  
  19.             n2++;  
  20.             b[n2] = a[i];  
  21.             n -= a[i];  
  22.             f(n);  
  23.             n += a[i];  
  24.             n2--;  
  25.         }  
  26.         else if(n == a[i])  
  27.         {  
  28.             n2++;  
  29.             b[n2] = a[i];  
  30.             for(j = 0;j <= n2;j++)  
  31.             {  
  32.                 printf("%d ",b[j]);  
  33.             }  
  34.             printf("\n");  
  35.             n2--;  
  36.             return;  
  37.         }  
  38.         else  
  39.         {  
  40.             return;  
  41.         }  
  42.     }  
  43. }  
  44.   
  45. int main()  
  46. {  
  47.     f(25);  
  48.     return 0;  
  49. }  

阅读全文
0 0