Я создал программу для проверки количества позиций, которые король может переместить за K шагов.У меня есть шахматная доска размером 8 × 8 с рядами и столбцами, отмеченными от 1 до 8. Предположим, наш король находится в позиции 1,3;он может переместиться на 5 новых мест и может остаться на текущей позиции, поэтому в целом наш король может переместиться на 6 мест.Действительность нового места, где может двигаться наш король, можно проверить по формуле <i>Square(r'-r)+Square(c'-c)<=2</i>
, где <i>r'</i>
и <i>c'</i>
- это позиции ячеек, которые нужно проверить.
Мой код отлично работает для K =1 и 2, однако результаты начинают отклоняться для 3 или более значений K.
import java.util.Scanner;
class Chess {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int testCases;
testCases = input.nextInt();
while (testCases-- > 0 && testCases <= 512) {
int R, C, K, count = 0;
R = input.nextInt();
C = input.nextInt();
K = input.nextInt();
if (R >= 1 && R <= 8 && C <= 8 && C >= 1 && K <= 8 && K >= 1) {
for (double rowIndex = 1; rowIndex <= 8; rowIndex++) {
for (double columnIndex = 1; columnIndex <= 8; columnIndex++) {
if (Math.pow((rowIndex - R), 2) + Math.pow((columnIndex - C), 2) <= (2 * Math.pow(K, 2))) {
count++;
}
}
}
}
System.out.println(count);
}
}
}