@[xzyfly](/user/1183074)
1.退出条件不是 **o == 0**
2.20行调用条件好像不对
AC代码:
```cpp
#include <bits/stdc++.h>
using namespace std;
int n,m,ans = 0;
void dfs(int last,int sum,int x){
if(x == m){//退出条件
if(sum == n){
ans ++;
}
return ;
}
//深层递归
for(int i = last;i * (m - x) + sum <= n;i ++){//剪枝
dfs(i,sum + i,x + 1);
}
}
int main(){
cin >> n >> m;
dfs(1,0,0);
cout << ans;
return 0;
}
```
**函数内我做了一个剪枝,不做可能TLE**
六年级第一次帮别人DeBug,说的不好的请指出(感谢)
by Zhaozimo1207 @ 2024-03-23 22:47:09
其实有两个地方错了
1:14 行不要return我竟然没发现
2:递归边界为o==1 @[Zhaozimo1207](/user/965109)
by xzy_AK_IOI @ 2024-03-24 11:17:00