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
}
}
