可以简单的发现当三人处于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,这时,进行记忆化搜索优化即可