Annettuna on n \times n -ruudukko, jonka joissain ruuduissa on kolikko.
Yhdellä siirrolla voit kerätä kaikki kolikot haluamaltasi pysty- tai vaakariviltä. Mikä on pienin tarvittava määrä siirtoja kerätä kaikki kolikot?
Ruudukon kuvauksessa merkki . tarkoittaa tyhjää ja merkki X tarkoittaa kolikkoa. Voit olettaa, että 1 \le n \le 20.
Python
Toteuta tiedostoon coingrid.py funktio count, joka ilmoittaa pienimmän määrän siirtoja kerätä kaikki kolikot.
def count(r):
# TODO
if __name__ == "__main__":
r =["........",
"........",
"...X..X.",
"........",
"....X...",
"..X.X..X",
"........",
"....X..."]
print(count(r)) # 3
Java
Toteuta tiedostoon CoinGrid.java metodi count, joka ilmoittaa pienimmän määrän siirtoja kerätä kaikki kolikot.
public class CoinGrid {
public int count(String[] r) {
// TODO
}
public static void main(String[] args) {
CoinGrid c = new CoinGrid();
String[] r = {"........",
"........",
"...X..X.",
"........",
"....X...",
"..X.X..X",
"........",
"....X..."};
System.out.println(c.count(r)); // 3
}
}
