欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

降水量(python)

发布时间:2024/5/8 python 55 豆豆
生活随笔 收集整理的这篇文章主要介绍了 降水量(python) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

题目描述

给定n个柱面的高度,表示降雨某地n块区域的海拔高度。 计算降雨之后该地最大储水面积。如果低于地平线,也就是小于0,则一定积水

输入描述:

第一行输入整数n.(1<=n<=10000) 第二行输入n个高度整数h。(-10000<=h<=10000)

输出描述:

输出答案。

示例

输入

12
0 1 0 2 1 0 1 3 2 1 2 1

输出

6

代码

class Solution:def __init__(self) -> None:passdef solution(self, n, arr):result = 0low_water = 0max_water = 0# TODO: 请在此编写代码i = 0for x in range(0, len(arr)-1):if arr[x] > arr[x+1]:i = x # print(i)breakhigh_water = arr[i]high_i = i # print(i)while(i < len(arr)-1): # print(str(i)+"|||||||"+str(len(arr)))i = i+1 # print(str(high_i)+"=="+str(high_water)+"=="+str(arr[i]))if i < len(arr)-2:if high_water <= arr[i] and arr[i] > arr[i+1]:low_water = arr[i]j_ori = high_i + 1if high_water == 0 and i>0:max_water = low_waterj_ori = high_ielif high_water > low_water:max_water = low_waterelse:max_water = high_water # print(str(max_water)+"++"+str(low_water))for j in range(j_ori, i):result = result + (max_water - arr[j])high_i = ihigh_water = arr[i]elif i == len(arr)-1:i = high_ihigh_i = high_i+1high_water = arr[high_i]else:if high_water <= arr[i]:low_water = arr[i]j_ori = high_i + 1if high_water == 0 and i>0:max_water = low_waterj_ori = high_ielif high_water > low_water:max_water = low_waterelse:max_water = high_water # print(str(max_water)+"++"+str(low_water)+"++high_i:"+str(high_i))for j in range(j_ori, i): # print("222:"+str(result))result = result + (max_water - arr[j]) # print("222:"+str(result))high_i = ihigh_water = arr[i]elif i == len(arr)-1:high_i = high_i+1high_water = arr[high_i]i = high_i-1if high_i == len(arr)-2:break# TODO: 请在此编写代码return resultif __name__ == "__main__":n = int(input().strip())arr = [int(item) for item in input().strip().split()]sol = Solution()result = sol.solution(n, arr)print(result)

通过率40%

总结

以上是生活随笔为你收集整理的降水量(python)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。