我修改了下你的代码,有这几个问题
1. 不是$n$==0啊,题目都说了 n至少大于0了,改成$n$==1
1.输出后要endl,换行
AC代码~
```cpp
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,m,n;
int dfs(int m,int n){
if(m==1 or m==0 or n==1) return 1;
if(m<n) return dfs(m,m);
else return dfs(m-n,n)+dfs(m,n-1);
}
signed main(){
cin>>t;
for(int i=1;i<=t;i++){
cin>>m>>n;
cout<<dfs(m,n)<<endl;
}
return 0;
}
/*
m个苹果,n个盘子
1.m < n,盘子数等于苹果数:
1.1 return (m,m);
2.m ≠n,盘子数不等于苹果数:
2.1 每个盘子都放苹果
2.1.1 m>n 苹果数大于盘子数
return (m,n)=2.1.3+2.1.4=(m-n,n)+(m,n-1);
2.1.2 m<n 苹果数小于盘子数
回到(1.) = return (m,m);
2.1.3 自由苹果=m-n,return (m-n,n);
2.1.4 自由空盘=n-m,return (m,n-1);
*/
```
~~壶关~~
by hexuchen @ 2023-07-12 22:28:17