1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
int sum; int store[10]; void Output() //打印 { for(int i=9;i>=0;i--) { cout<<store[i]<<" "; } cout<<endl; ++sum; }
void Comput(int score, int num) { if(score<0 || score>(num+1)*10) // 前者是因为已经打满了90环 在Comput的第一个参数有个减法 后者是不可能打满90环 return ; if(num==0) //打到最后一次 直接将剩下的环数进行匹配 这样避免了最后一次的for循环 { store[num]=score; Output(); return; } for(int i=0;i<=10;i++) //没有出现上述情况,递归 { store[num]=i; // 这一发打了多少环 0-10环循环 Comput(score-i,num-1); // 下一发应该打的目的 } }
int main() { Comput(90,9); cout<<sum<<endl; return 0; }
这样就理解了!
|