旧题重问。。。
刚刚在精华区看到这样一帖。。 刚看csdn论坛,于是想到大四时听同学说了这么一道题,当时做了几天没搞出来,题目意思如下:
给你一个二维数组(比如是M*N的),把他们放入M*N的方格中,每个数字代表该方格的高度,这样就俯视就会形成凹凸不平,如果用这个形状存储水,凹的地方会有积水,请问它能存储多少水?
例如二维数组为:
9 9 9 9
3 0 0 9
7 8 9 6
时,答案是中间的0,0位置可以存储3(因为其外面最低是3,即“木桶效应”)个单位的水,因此答案为3+3=6
我想知道这样解行么
既然是装水。。那就把它装满水。让它流。找出数组中的最大数max。这个数乘数组元素个数得到总量。;从最外圈开始比较。比它小全减掉。再找里面一圈。每个元素元素i与它相邻的三个外圈元素中最小的比较。。比它大就max-i。比它小。就按最外面的减。。依次往中间比较。。总量减掉流掉的。就是可装的。。估计有我想不到的情况。希望大牛指出