问题定义如下:
给定一个正方形,正方形被1m x 1m的平坦石板所覆盖。石板可能高度不同。周围是草地。开始下雨了。确定哪里会形成水坑并计算其中包含多少水。水不会通过角落流走。在任何草地区域都可以随时吸收任何数量的水。
输入: 宽度 高度 宽度*高度的非负数描述每个石板相对于草地高度的高度。
输出: 水坑中的水量。 宽度*高度个符号,描述哪些位置会产生水坑,哪些位置不会。 . - 没有水坑 # - 水坑
示例: 输入:
输入: 宽度 高度 宽度*高度的非负数描述每个石板相对于草地高度的高度。
输出: 水坑中的水量。 宽度*高度个符号,描述哪些位置会产生水坑,哪些位置不会。 . - 没有水坑 # - 水坑
示例: 输入:
8 8
0 0 0 0 0 1 0 0
0 1 1 1 0 1 0 0
0 1 0 2 1 2 4 5
0 1 1 2 0 2 4 5
0 3 3 3 3 3 3 4
0 3 0 1 2 0 3 4
0 3 3 3 3 3 3 0
0 0 0 0 0 0 0 0
输出:
11
........
........
..#.....
....#...
........
..####..
........
........
输入:
16 16
8 0 1 0 0 0 0 2 2 4 3 4 5 0 0 2
6 2 0 5 2 0 0 2 0 1 0 3 1 2 1 2
7 2 5 4 5 2 2 1 3 6 2 0 8 0 3 2
2 5 3 3 0 1 0 3 3 0 2 0 3 0 1 1
1 0 1 4 1 1 2 0 3 1 1 0 1 1 2 0
2 6 2 0 0 3 5 5 4 3 0 4 2 2 2 1
4 2 0 0 0 1 1 2 1 2 1 0 4 0 5 1
2 0 2 0 5 0 1 1 2 0 7 5 1 0 4 3
13 6 6 0 10 8 10 5 17 6 4 0 12 5 7 6
7 3 0 2 5 3 8 0 3 6 1 4 2 3 0 3
8 0 6 1 2 2 6 3 7 6 4 0 1 4 2 1
3 5 3 0 0 4 4 1 4 0 3 2 0 0 1 0
13 3 6 0 7 5 3 2 21 8 13 3 5 0 13 7
3 5 6 2 2 2 0 2 5 0 7 0 1 3 7 5
7 4 5 3 4 5 2 0 23 9 10 5 9 7 9 8
11 5 7 7 9 7 1 0 17 13 7 10 6 5 8 10
输出:
103
................
..#.....###.#...
.......#...#.#..
....###..#.#.#..
.#..##.#...#....
...##.....#.....
..#####.#..#.#..
.#.#.###.#..##..
...#.......#....
..#....#..#...#.
.#.#.......#....
...##..#.#..##..
.#.#.........#..
......#..#.##...
.#..............
................
我尝试了不同的方法。从最大值开始泛洪填充,然后从最小值开始,但这对于每个输入都不起作用或需要代码的复杂化。有什么想法吗?
我对复杂度为O(n ^ 2)或o(n ^ 3)的算法很感兴趣。