Latar Belakang
Saya telah membangun rintangan sederhana dengan menempatkan kotak di ruangan persegi panjang. Sekarang saya ingin menghitung jumlah cara yang pada dasarnya berbeda untuk menyelesaikannya. Saya ingin Anda menulis saya program untuk itu.
Memasukkan
Input Anda adalah array karakter persegi panjang yang tidak kosong .#
. Titik .
- titik itu adalah ruang kosong, dan #
merupakan penghalang.
Sebuah jalan melalui rintangan kursus dimulai di sudut kiri atas dan berakhir di sudut kanan bawah, dan pergi hanya kanan atau ke bawah. Selain itu, jalur yang valid tidak dapat melewati rintangan. Berikut ini beberapa contoh yang diambil dengan +
-karakter:
Valid path Invalid path Invalid path Invalid path
++........ ++........ +++++..... ..+.......
.++++++#.. .+.....#.. ....+++#++ ..++...#..
......+#.. .+.++++#.. .......#.+ ...+++.#..
....#.++++ .+++#.++++ ....#....+ ....#+....
Dua jalur pada dasarnya serupa 1 jika satu dapat diubah menjadi yang lain dengan memindahkan satu +
per satu. Jalur perantara juga harus valid, sehingga Anda tidak dapat membengkokkan jalur melewati rintangan. Sebagai contoh, dua jalur pertama di sini pada dasarnya serupa, tetapi yang ketiga pada dasarnya berbeda dari mereka, karena tidak dapat digoyahkan atas dua rintangan:
++........ +......... +++++++++.
.+++++.#.. ++.....#.. .......#+.
.....+.#.. .++++++#.. .......#++
....#+++++ ....#.++++ ....#....+
Keluaran
Output Anda adalah jumlah jalur yang pada dasarnya berbeda melalui rintangan. Dengan kata lain, jika semua jalur yang valid dibagi ke dalam kelas yang pada dasarnya jalur yang sama, outputnya adalah jumlah kelas. Perhatikan bahwa angka ini mungkin 0, jika tidak ada jalur yang valid.
Aturan dan penilaian
Anda dapat menulis program atau fungsi lengkap. Hitungan byte terendah menang, dan celah standar tidak diizinkan. Tidak ada batasan waktu, kecuali bahwa Anda harus mengevaluasi program Anda pada setiap test case sebelum mengirimkannya.
Uji kasus
....
....
.... => 1
...#
....
...# => 0
#..#
..#.
.... => 0
......
......
..##..
......
...... => 2
......
...#..
......
..#...
#..... => 3
......
..#...
......
....#.
#..... => 4
.......
##.....
....###
...#...
..##.#.
#....#.
..#.... => 0
......#.
..##....
...#....
.......#
....#...
.##...#.
....#...
##...... => 7
.........
.#.#.#.#.
.........
#.#...#.#
.........
.#.#.#.#.
......... => 17
..........
.#........
..........
.....#....
#.........
........#.
......#...
.......... => 10
.........
.#.......
.........
...#.....
.........
.....#...
.........
.......#.
......... => 16
1 Istilah teknis yang benar adalah "homotopic" .
+
" pada dasarnya saya maksudkan bahwa satu sudut jalan dibalik ke sudut arah yang berlawanan.
+
per satu "? Apakah ini menyiratkan bahwa jalur yang pada dasarnya serupa harus memiliki panjang yang sama?