简单说说思路: 1)首先,设定好方格二维数组,这个大家想法应该一样 2-1)其次,找到方格中的“至高点” 2-2)按照“至高点”填充所有方格,使其充满最大水量 3)然后开始移除水 3-1)如果在最外层的边界上的话,不能储存水 3-2)然后开始遍历整个数组,如果有能移除的水就移除掉,并且重复步骤3) 直到所有的水都不能移除为止 3-3)水是否能移除,就看当前位置的水位是否比 上下左右的水位高即可 4)打印剩下的水的总和即可 没有使用任何复杂算法,仅通过反复遍历数组就完成了任务
[quote=引用 4 楼 ljl434841 的回复:] 找出这个二维数组形成木桶时最短那块板,木桶的桶高是有这个数组的“四边”所构成,即a[0][0]...a[0][N-1],a[0][N-1]...a[M-1][N-1],a[M-1][N-1]...a[M-1][0],a[M-1][0]...a[0][0],把这些都放进一个数组,然后找出最小的那个数,也就是最短的木板。然后把除了四边的那些数与这个最短的木板作差,负数则能储水;正数刚高于最低桶边,不能储水,无视之
62,614
社区成员
307,326
社区内容
加载中
试试用AI创作助手写篇文章吧