CSES - Hirviöt

Sinun tulee kulkea n \times n -ruudukossa vasemmasta yläkulmasta oikeaan alakulmaan niin, että liikut joka vuorolla askeleen oikealle tai alaspäin. Mikä on pienin määrä vastaan tulevia hirviöitä, jos valitset reitin optimaalisesti?

Ruudukon kuvauksessa merkki . tarkoittaa lattiaa, merkki # tarkoittaa seinää ja merkki @ tarkoittaa hirviötä. Voit olettaa, että 1 \le n \le 20. Jos mitään reittiä ei ole olemassa, haluttu vastaus on -1.

Python

Toteuta tiedostoon monsters.py funktio count, joka antaa pienimmän hirviöiden määrän.

def count(r):
    # TODO

if __name__ == "__main__":
    r = ["....@",
         "@##.#",
         ".##@#",
         ".@..#",
         "###@."]
    print(count(r)) # 2

Java

Toteuta tiedostoon Monsters.java metodi count, joka antaa pienimmän hirviöiden määrän.

public class Monsters {
    public int count(String[] r) {
        // TODO
    }

    public static void main(String[] args) {
        Monsters m = new Monsters();
        String[] r = {"....@",
                      "@##.#",
                      ".##@#",
                      ".@..#",
                      "###@."};
        System.out.println(m.count(r)); // 2
    }
}