【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("\n"); 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 }