随机地形装水问题

  前几个月面试一个美国公司, 给了几道线上题, 说是一星期都做完就行了, 因为当时在考编制, 就没有继续做了, 其中有一道就是装水的问题:

  一个使用正方体作为基础, 随机生成的地面, 下雨之后能装多少水? 如下图:

  姑且认为只要前后左右都有石头的时候, 就能把水存住 : 

  计算逻辑可以先从找到无法存水的点开始, 其它的点就作为可存储水的点, 设置一个较大的储存水量的数值, 然后厉遍这些无法存水的点,

找到可到达的其它点(高度小于等于起始点的), 就像寻路算法的厉遍逻辑, 将所有到达点的可存储水量设置到不高于当前点的最小值, 即可.

  这里如何找到无法存水的点, 可以先看二维的情况:

  显而易见, 图中的0点都是无法存水的, 要找到这些点只需要找到第一个最高点, 然后往左右继续找最高点, 直到末尾.

  用这个方法从横向上来一遍, 再从纵向上来一遍, 就能大致找到地表无法储存水的点了. 然后厉遍就是了.

 

 

  

 

posted @   tiancaiKG  阅读(63)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示