打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python |石子游戏的最大得分

引言

力扣(LeetCode),未来不止于此!

问题描述

你正在玩一个单人游戏,面前放置着大小分别为 abc的三堆石子。

每回合你都要从两个不同的非空堆 中取出一颗石子,并在得分上加 1 分。当存在两个或更多的空堆时,游戏停止。

给你三个整数a、bc,返回可以得到的最大分数 。

示例 1:

输入:a = 2, b = 4, c = 6

输出:6

解释:石子起始状态是 (2, 4, 6) ,最优的一组操作是:

- 从第一和第三堆取,石子状态现在是 (1, 4, 5)

- 从第一和第三堆取,石子状态现在是 (0, 4, 4)

- 从第二和第三堆取,石子状态现在是 (0, 3, 3)

- 从第二和第三堆取,石子状态现在是 (0, 2, 2)

- 从第二和第三堆取,石子状态现在是 (0, 1, 1)

- 从第二和第三堆取,石子状态现在是 (0, 0, 0)

总分:6 分 。

示例 2:

输入:a = 4, b = 4, c = 6

输出:7

解释:石子起始状态是 (4, 4, 6) ,最优的一组操作是:

- 从第一和第二堆取,石子状态现在是 (3, 3, 6)

- 从第一和第三堆取,石子状态现在是 (2, 3, 5)

- 从第一和第三堆取,石子状态现在是 (1, 3, 4)

- 从第一和第三堆取,石子状态现在是 (0, 3, 3)

- 从第二和第三堆取,石子状态现在是 (0, 2, 2)

- 从第二和第三堆取,石子状态现在是 (0, 1, 1)

- 从第二和第三堆取,石子状态现在是 (0, 0, 0)

总分:7 分 。

示例 3:

输入:a = 1, b = 8, c = 8

输出:8

解释:最优的一组操作是连续从第二和第三堆取 8 回合,直到将它们取空。

注意,由于第二和第三堆已经空了,游戏结束,不能继续从第一堆中取石子。

算法描述

抓住问题,通过仔细观察分析问题的解释,可以发现当出现实例1中a+b=c的情况时,它的得分等于a+b,后面实例2中第二次取石子时a+b也等于c,那么就可以得出规律,当出现a+b=c时,得分就等于a+b,其中的a,b不是固定,但是c肯定为三个数字中的最大数值,那么就可以通过三个数值的大小数值去进行解题。当a+b<=c时,返回的数值为a+b

实习编辑:李欣容

稿件来源:深度学习与文旅应用实验室(DLETA)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
二进制枚举与贪心算法
算法萌新如何学好动态规划(1)
Github 助你实现“家国梦”
消消看,探密游戏
石子归并问题
简单的线性规划问题—生命的博弈
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服