题解 | #哥三好#

哥三好

https://ac.nowcoder.com/acm/problem/223417

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

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 13:35
虽然不怎么光彩,经过这件事,可能我真的要去认同“面试八股文早该淘汰!不会用AI作弊的程序员=新时代文盲!”这句话了
HellowordX:Ai的出现是解放劳动力的,不是用来破坏公平竞争环境的,这样下去,轻则取消所有线上面试,严重了会影响整个行业对所有人产生影响,企业会拉高入职考核各种离谱考核会层出不穷
你找工作的时候用AI吗?
点赞 评论 收藏
分享
牛客38347925...:9,2学生暑期实习失利开始投小厂,给这群人整自信了
点赞 评论 收藏
分享
06-26 15:33
青岛工学院 Java
积极的秋田犬要冲国企:他现在邀请我明天面试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务