1222:放苹果

放苹果

之所以要约束下次分配苹果的最小个数,是因为如果不进行约束,就有可能计算重复情况。

初始为1也是基于同样的考虑。

 1 #include<iostream>
 2 using namespace std;
 3 int k,n;
 4 //c表示下次分配最小个数,d表示分配到了第几个盘子,b表示还有多少个苹果可分配
 5 void dfs(int c,int d,int b){
 6     if(c>b||!b||d>n){
 7         if(!b)k++;
 8         return;
 9     }
10     for(int i=c;i<=b;i++){
11         dfs(i,d+1,b-i);
12     }
13 }
14 int main(){
15     int t,m;
16     cin>>t;
17     while(t--){
18         cin>>m>>n;
19         k=0;
20         dfs(1,1,m);
21         cout<<k<<endl;
22     }
23     return 0;
24 }

 

posted @ 2021-08-10 11:11  Rekord  阅读(307)  评论(0编辑  收藏  举报