Dado o tamanho do tabuleiro de xadrez e a posição inicial do cavaleiro, calcule a probabilidade de que após os k
movimentos o cavaleiro esteja dentro do tabuleiro de xadrez.
Nota:
O cavaleiro faz todos os seus 8 movimentos possíveis com igual probabilidade.
Uma vez que o cavaleiro está fora do tabuleiro de xadrez, ele não pode voltar para dentro.
Entrada
As entradas são separadas por vírgula no formato:
l,k,x,y
onde l
é o comprimento e a largura do tabuleiro de xadrez, k
é o número de movimentos que o cavaleiro fará, x
é a posição x da posição inicial do cavaleiro e y
é a posição y da posição inicial do cavaleiro. Observe que 0,0
é o canto inferior esquerdo do quadro e l-1,l-1
o canto superior direito do quadro.
Algoritmo:
Comece com as coordenadas iniciais do cavaleiro. Faça todos os movimentos possíveis para esta posição e multiplique esses movimentos com sua probabilidade, pois cada movimento chama recursivamente a função continue esse processo até que a condição final seja atendida. A condição de término é se o cavaleiro estiver fora do tabuleiro de xadrez, neste caso, retornar 0 ou se o número desejado de movimentos for esgotado, nesse caso, retornar 1.
Como podemos ver, o estado atual da recursão depende apenas das coordenadas atuais e do número de etapas realizadas até o momento. Portanto, podemos memorizar essas informações de forma tabular.
Crédito
Esse desafio é originalmente de um post do crazyforcode.com publicado sob a licença CC BY-NC-ND 2.5 IN . Foi ligeiramente modificado para torná-lo um pouco mais desafiador.