能不能帮忙解答下我搜索的做法?

P2386 放苹果

```cpp #include<iostream> #include<cstdio> using namespace std; int t,n,m,ans,cnt; void dfs(int used,int num,int rest) //used:这次一共用的盘子数,num:将要放苹果的盘子,rest:手中还剩多少苹果 { if(rest==0&&num!=used)return; if(rest==0&&num==used) { ans++; return; } if(num>used)return; for(int i=1;i<=rest;i++) { dfs(used,num+1,rest-i); } return; } int main() { scanf("%d",&t); while(t--) { scanf("%d%d",&m,&n); for(int i=1;i<=n;i++) { dfs(i,1,m); } printf("%d\n",ans); } } ```
by CHUAN02162 @ 2018-12-24 21:12:52


#include <bits/stdc++.h> using namespace std; int put(int m,int n) { if(m<=0) return 1; if(n==1) return 1; if(n==0) return 0; if(m<n) return put(m,m); else return put(m,n-1)+put(m-n,n); } int main() { int m,n,t; cin>>t; for(int i=1;i<=t;i++) { cin>>m>>n; cout<<put(m,n)<<endl; } return 0; }
by 孙玉瑶 @ 2019-05-28 12:28:48


|