Jogos de táticas baseadas em turnos, como Advance Wars, Wargroove e Fire Emblem, são constituídos por uma grade quadrada de terreno variável, com unidades de diferentes classes de movimento, exigindo custos diferentes para cada tipo de terreno. Investigaremos um subconjunto desse problema.
Desafio
Sua tarefa é determinar se um local é acessível a partir de outro, dada uma grade de custos do terreno e uma velocidade de movimento.
As unidades só podem se mover ortogonalmente onde o custo de se mover para um quadrado é o valor da célula correspondente na grade (a saída é gratuita). Por exemplo, mover de uma célula com valor 3 para uma célula com valor 1 custa 1 movimento, mas seguir o caminho requer 3. Alguns quadrados podem estar inacessíveis.
Exemplo
1 [1] 1 1 1
1 2 2 3 1
2 3 3 3 4
1 3 <1> 3 4
Mover de [1]
para <1>
requer um mínimo de 7 pontos de movimento, movendo para a direita um quadrado e depois para baixo três. Assim, se for dada 6 ou menos como velocidade de movimento, você deverá emitir uma resposta falsa.
Casos de teste de exemplo
Eles usarão coordenadas com índice zero (linha, coluna) de origem superior esquerda, em vez de células entre colchetes, no início e no final, para facilitar a análise. As células inacessíveis serão representadas comX
Caso 1a
1 1 2 1 X
1 2 2 1 1
2 1 1 2 1
X X X 1 2
Speed: 5
From (2, 3) to (0, 1)
Output: True
Caso 1b
1 1 2 1 X
1 2 2 1 1
2 1 1 2 1
X X X 1 2
Speed: 4
From (2, 3) to (0, 1)
Output: False
Caso 1c
1 1 2 1 X
1 2 2 1 1
2 1 1 2 1
X X X 1 2
Speed: 5
From (0, 1) to (2, 3)
Output: False
Caso 2a
3 6 1 1 X 4 1 2 1 X
5 1 2 2 1 1 1 X 1 5
2 1 1 1 2 1 1 1 X 1
2 1 1 3 1 2 3 4 1 2
1 1 2 1 1 4 1 1 1 2
3 2 3 5 6 1 1 X 1 4
Speed: 7
From (3, 4) to (2, 1)
Output: True
Caso 2b
3 6 1 1 X 4 1 2 1 X
5 1 2 2 1 1 1 X 1 5
2 1 1 1 2 1 1 1 X 1
2 1 1 3 1 2 3 4 1 2
1 1 2 1 1 4 1 1 1 2
3 2 3 5 6 1 1 X 1 4
Speed: 4
From (3, 4) to (2, 1)
Output: False
Caso 2c
3 6 1 1 X 4 1 2 1 X
5 1 2 2 1 1 1 X 1 5
2 1 1 1 2 1 1 1 X 1
2 1 1 3 1 2 3 4 1 2
1 1 2 1 1 4 1 1 1 2
3 2 3 5 6 1 1 X 1 4
Speed: 7
From (1, 8) to (2, 7)
Output: True
Caso 3a
2 1 1 2
2 3 3 1
Speed: 3
From (0, 0) to (1, 1)
Output: False
Caso 3b
2 1 1 2
2 3 3 1
Speed: 3
From (1, 1) to (0, 0)
Output: True
Regras, premissas e notas
- As brechas padrão são proibidas, a E / S pode estar em qualquer formato conveniente
- Você pode assumir que as coordenadas estão todas na grade
- A velocidade de movimento nunca será superior a 100
- As células inacessíveis podem ser representadas com números muito grandes (por exemplo, 420, 9001, 1 milhão) ou com 0 ou nulo, o que for mais conveniente para você.
- Todas as entradas consistirão em números inteiros positivos (a menos que seja nulo ou 0 para representar células inacessíveis)