Mengingat ukuran papan catur dan posisi awal ksatria, hitung probabilitas bahwa setelah k
bergerak ksatria akan berada di dalam papan catur.
catatan:
Knight itu membuat 8 gerakan yang mungkin dengan probabilitas yang sama.
Begitu ksatria berada di luar papan catur, ia tidak bisa kembali ke dalam.
Memasukkan
Input dipisahkan koma dalam bentuk:
l,k,x,y
di mana l
panjang dan lebar papan catur, k
adalah jumlah gerakan ksatria akan membuat, x
adalah posisi-x dari posisi awal ksatria, dan y
adalah posisi-y dari posisi awal ksatria. Perhatikan bahwa itu 0,0
adalah sudut kiri bawah papan dan l-1,l-1
merupakan sudut kanan atas papan.
Algoritma:
Mulailah dengan koordinat awal ksatria. Buat semua gerakan yang mungkin untuk posisi ini dan gandakan gerakan ini dengan probabilitasnya, untuk setiap gerakan secara rekursif memanggil fungsi untuk melanjutkan proses ini sampai kondisi terminasi terpenuhi. Kondisi penghentian adalah jika ksatria berada di luar papan catur, dalam hal ini mengembalikan 0, atau jumlah gerakan yang diinginkan habis, dalam hal ini pengembalian 1.
Seperti yang dapat kita lihat bahwa kondisi rekursi saat ini hanya bergantung pada koordinat saat ini dan jumlah langkah yang dilakukan sejauh ini. Karena itu kami dapat mengingat informasi ini dalam bentuk tabel.
Kredit
Tantangan ini berasal dari posting blog crazyforcode.com yang diterbitkan di bawah lisensi CC BY-NC-ND 2.5 IN . Itu sedikit dimodifikasi untuk membuatnya sedikit lebih menantang.