問題は次のように定義されます: 正方形が与えられます。広場には、1m x 1m の平らな敷石が並んでいます。芝生が広場を囲んでいます。敷石の高さが異なる場合があります。雨が降り始めます。水たまりが作成される場所を決定し、含まれる水の量を計算します。角から水が流れません。芝生のどのエリアでも、いつでも任意の量の水を浸すことができます。
入力:
幅高さ
width*height 芝生レベル上の各敷石の高さを表す負でない数値。
出力:
水たまりからの水の量。
水たまりが作成される場所と作成されない場所を示す width*height 記号。
. - 水たまりなし
# - 水たまり
例
入力:
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) の興味深いアルゴリズムです。