【C】打靶的所有情况

Problem set:运动员打靶10次,求打中90环的所有可能情况,要求用递归算法实现。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 
 5 void Compute(int score, int num, int buffer[])
 6 {
 7     extern void output(int buffer[]);
 8      if(score < 0 || score > (num)*10)
 9          return ;
10      if(num == 0)//符合条件并且射击完毕
11      {
12          output(buffer);/*输出解集*/
13          return ;
14      }
15      int i;
16      for(i=0;i<=10;i++)
17      {
18          buffer[num-1] = i;
19          Compute(score-i,num-1,buffer);
20      }
21 }
22 
23 void output(int buffer[])
24 {
25     int i;
26     for(i=0;i<10;i++)
27         printf("%d ",buffer[i]);
28     printf("
");
29     return;
30 }
31 
32 
33 
34 int main()
35 {
36     int buffer[10];
37     memset(buffer,0,sizeof(buffer));
38     Compute(90,10,buffer);
39     return 0;
40 }
原文地址:https://www.cnblogs.com/yongjiuzhizhen/p/4311026.html