Halma
시간 제한1초메모리 제한1024 MB
표시된 말 하나가 주어진 보드에서 한 번의 이동으로 도달할 수 있는 모든 빈 칸을 표시하는 문제다. 이동은 한 칸 걷기 또는 다른 말을 넘는 연속 점프다.
문제
Halma on traditsiooniliselt kahe või nelja mängija lauamäng, mida mängitakse või ruudust koosneval laual. Detsembris, kui Jõuluvanal on kiired päevad, mängib Jõulumemm ühe mängija varianti. Vahelduse suurendamiseks kasutab ta erinevaid ristkülikulisi mängulaudu.
Mängu alguses on mängija nupud laua ühes nurgas oleval stardialal ja eesmärk on viia need diagonaalis vastasnurka finišialale. Selleks võib teha kahesuguseid käike:
- Sammuks nimetame nupu liigutamist tühjale naaberruudule samas reas või samas veerus, nagu näidatud alloleval joonisel vasakul. Sammukäigul võib teha ainult ühe sammu.
- Hüppeks nimetame nupu liigutamist üle naaberruudul oleva nupu vahetult selle taga olevale tühjale ruudule samas reas või samas veerus. Hüpata võib ainult üle ühe nupu, nagu näidatud alloleval joonisel keskel (rohelise noole suunas saab hüpata, punase suunas ei saa). Erinevalt kabest üle teise nupu hüppamine teist nuppu kuidagi ei mõjuta. Hüppekäik võib koosneda ühest või mitmest järjestikusest hüppest sama nupuga, nagu näidatud alloleval joonisel paremal. Hüpete jada ei pea olema maksimaalse pikkusega: mängija võib käigu oma soovi kohaselt igal hetkel lõpetada, isegi kui tal oleks võimalik veel edasi hüpata.
Kirjutada programm, mis saab mänguseisu ja leiab sellel kõik ruudud, millele antud nupp ühe käiguga jõuda võib.
입력
Sisendi esimesel real on mängulaua ridade arv ja veergude arv ().
Järgmisel real on igaühel täpselt märki, kus punkt '.' tähistab tühja ruutu, trellimärk '#' uuritavat nuppu ja tärn '*' muud nuppu.
출력
Väljastada täpselt rida, igale reale täpselt märki: sisendis antud mängulaud, kus plussidega '+' on märgitud need ruudud, kuhu uuritav nupp ühe käiguga jõuda võib.