- 积分
- 36102
- 明经币
- 个
- 注册时间
- 2006-12-16
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
发表于 2023-2-25 22:02:24
|
显示全部楼层
谢谢各位的代码和 mahuan兄的图解,有趣的题目。
不过对各类算法不是很懂,问了一下儿子怎么解,他告诉我一句话:第n个挡板的蓄水值等于其左侧高度数列最大值A 和 其右侧高度数列最小值B 两者中的小值 减去n的高度值,加起来就可以。
像是奥数题。
估计原理和前面的代码也差不多。
验证了一下,好像如此:)
PY代码
- a = [0, 1, 5, 12, 7, 11, 3, 5, 12, 14, 16, 6, 4, 12, 9, 23, 16, 4, 13, 8, 12, 15, 7, 8, 4];s=0
- for i in range(1,len(a)-1):
- s=s+max(min(max(a[0:i]),max(a[i+1:len(a)]))-a[i], 0)
- print(s)
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
x
|