可以简单的发现当三人处于a<300,b<300,c<300时,无法继续运行,只能返回1;
当只有一人在>=300&&<450时,同样只能有一个,也是返回1;
进行暴力枚举,可以得到一个有效的结果
代码
int dfs(int a, int b, int c)
{
int ans = 0;
int f[]={300,450,750}
for (int i = 0; i < 3; i ++)
{
if (a >= f[i])
ans += dfs(a - f[i], b, c);
if (b >= f[i])
ans += dfs(a, b - f[i], c);
if (c >= f[i])
ans += dfs(a, b, c - f[i]);
}
if(ans==0)
ans=1;
return ans;
}
会发现tle,这时,进行记忆化搜索优化即可