Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 15.12.2019
Сообщений: 4

Составьте маршрут шахматного коня из клетки (0; 0) в заданную клетку (x; y) в космических шахматах

15.12.2019, 11:21. Показов 3231. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В космические шахматы играют на бесконечной доске, поэтому клетки нумеруют парой чисел (см. пример и рисунок к нему). Фигуры ходят по обычным правилам. Составьте маршрут шахматного коня из клетки (0; 0) в заданную клетку (x; y).

Напомним, что конь за один ход перемещается на одну клетку по одной оси и на две по другой, то есть, например, из клетки (0; 0) он за один ход может попасть в клетки (1; 2), (2; 1), (-1; 2), (2; -1), (1; -2), (-2; 1), (-1; -2) и (-2; -1).

В качестве ответа Вам нужно вывести любой (не обязательно кратчайший) маршрут с началом в (0; 0) и концом в (x; y), длина которого не больше 105 ходов.

Входные данные
Программа получает на вход два целых числа x и y, записанных в отдельных строках, — координаты конечной клетки маршрута коня. Клетка (x; y) не совпадает с началом координат. |x| ≤ 105, |y| ≤ 105.

Выходные данные
Программа должна вывести последовательность ходов, один ход в отдельной строке. В i-й строке должно быть выведено два числа xi и yi через пробел — координаты клетки, в которой окажется конь после i-го хода. Количество ходов не должно превышать 105. Последний ход должен вести в заданную клетку.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.12.2019, 11:21
Ответы с готовыми решениями:

В некотором государстве ввели компьютерный паспорт гражданина. Укажите пол гражданина и последовательность событий
Доброго времени суток,форумчане. Хотелось бы попросить помощи в решении одной задачи от умных голов. Задача: В некотором...

Васильев C# Глава 8 задача 2 (Просьба объяснить формулировку(задача внутри)
Текст задачи Написать программу , в которой есть класс с полем, являющимся ссылкой на одномерный целочисленный массив. У класса есть...

Васильев C# Глава 7 задача 8 (Просьба объяснить формулировку(задача внутри)
Текст задачи Напишите программу с классом, у которого есть текстовое поле. Значение текстовому полю присваивается при создании объекта...

1
1 / 1 / 0
Регистрация: 13.02.2020
Сообщений: 1
13.02.2020, 11:57
Я искал грамотное решение этой задачи, но никто нигде за неё не берётся, поэтому могу предложить рандом как работающую альтернативу грамотному решению. Там надо ещё дописать для отрицательных значений, но суть решения я передал.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
using System;
using Random = System.Random;
 
namespace ol3
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] load = Console.ReadLine().Split();
            string[] stroki = new string[105];
            int val=0,x=0,y=0, xn = int.Parse(load[0]), yn = int.Parse(load[1]);
            while (x!=xn || y!=yn && val<106)
            {
                bool pov = true;
                for (int i = 0; i < val; i++)
                {
                    if(stroki[val]==stroki[i])
                    {
                        pov = false;
                    }
                }
                val++;
                if (pov)
                {
                    if (x <= xn && y <= yn && xn - x >= yn - y)
                    {
                        x += 2;
                        y += 1;
                    }
                    else if (x <= xn && y <= yn && xn - x <= yn - y)
                    {
                        x += 1;
                        y += 2;
                    }
                    else if (x >= xn && y <= yn && xn - x >= yn - y)
                    {
                        x += -2;
                        y += 1;
                    }
                    else if (x >= xn && y <= yn && xn - x <= yn - y)
                    {
                        x += -1;
                        y += 2;
                    }
                    else if (x <= xn && y >= yn && xn - x >= yn - y)
                    {
                        x += 2;
                        y += -1;
                    }
                    else if (x <= xn && y >= yn && xn - x <= yn - y)
                    {
                        x += 1;
                        y += -2;
                    }
                    else if (x >= xn && y >= yn && xn - x >= yn - y)
                    {
                        x += -2;
                        y += -1;
                    }
                    else if (x >= xn && y >= yn && xn - x <= yn - y)
                    {
                        x += -1;
                        y += -2;
                    }
                }
                else
                {
                    Random rnd = new Random();
                    int r = rnd.Next(8);
                    if (r==0)
                    {
                        x += 2;
                        y += 1;
                    }
                    else if (r==1)
                    {
                        x += 1;
                        y += 2;
                    }
                    else if (r==2)
                    {
                        x += -2;
                        y += 1;
                    }
                    else if (r==3)
                    {
                        x += -1;
                        y += 2;
                    }
                    else if (r==4)
                    {
                        x += 2;
                        y += -1;
                    }
                    else if (r==5)
                    {
                        x += 1;
                        y += -2;
                    }
                    else if (r==6)
                    {
                        x += -2;
                        y += -1;
                    }
                    else if (r==7)
                    {
                        x += -1;
                        y += -2;
                    }
                }
                stroki[val] = x + " " + y;
                Console.WriteLine(stroki[val]);
 
            }
        }
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.02.2020, 11:57
Помогаю со студенческими работами здесь

Задача на k-тую цифру последовательности, задача на схему Горнера.
Ну, собственно опять прошу помощи... Задача 1: Определить k-тую цифру последовательности 1234567891011121314…, в которой выписаны подряд...

Задача на перебор вариантов. Задача Л.Эйлера. Про чиновника
Задача Л.Эйлера. Некий чиновник купил лошадей и быков на сумму 1770 талеров. За каждую лошадь он уплатил по 31 талеру, а за каждого быка по...

Первая смешанная задача для волнового уравнения на отрезке (задача о колебаниях ограниченной струны) методом Фурье
Решить первую смешанную задачу для волнового уравнения на отрезке (задача о колебаниях ограниченной струны) методом Фурье ...

Задача о размещении весов по ящикам (задача о рюкзаках)
Есть упорядоченный по невозрастанию набор весов предметов w1..wn, которые необходимо распределить по ящикам способным выдержать вес V,...

Задача линейного программирования, транспортная задача
Всем привет. сижу на экзамене, помогите пожалуйста решить,сроно!!! заранее спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru