Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 08.10.2020
Сообщений: 9

Задача: обойти клетки доски

24.01.2021, 19:04. Показов 1395. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана доска (N x N) с "выбитыми" клетками, а также конь на позиции X, Y. Вывести маршрут, если конь может обойти всю доску, заходя в каждую клетку по одному разу.
Подскажите, пожалуйста, как решать.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.01.2021, 19:04
Ответы с готовыми решениями:

Определить, имеют ли заданные клетки шахматной доски один цвет
Даны координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8). Разработать программу,...

Выяснить все ли клетки шахматной доски одного цвета
Здраствуйте, нам на оллимпиаду задали сделать 1 из програм но сколько бы во мне не было стремления опыт не позволяет решить её, надеюсь вы...

Обойти шахматным конем все клетки доски
Составить программу рбхода шахматным конем шахматной доски, побывав на каждом пое по одному разу. Рассмотреть все способы обхода. Помогите...

2
 Аватар для Enifan
1848 / 1190 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
24.01.2021, 20:03
Цитата Сообщение от chelty Посмотреть сообщение
как решать.
Методом перебора. Алгоритм не самый простой, но и не самый сложный.
Как образец подобной задачи Сделать программу, считающая ходы шахматных фигур «Слон» и «Конь»
1
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
24.01.2021, 21:34
Что-нибудь такое.

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
using System;
using System.Collections.Generic;
using System.Linq;
 
class Knight
{
    static (int x, int y)[] knightMoves = { (1, -2), (2, -1), (2, 1), (1, 2), (-1, 2), (-2, 1), (-2, -1), (-1, -2) };
    readonly int _size;
    (int x, int y) _startCoord, _coord;
    int _move;
    int[,] _access;
 
    public Knight(int x = 0, int y = 0, int size = 8)
    {
        _startCoord = (x, y);
        _size = size;
    }
 
    public void Start()
    {
        _move = 0;
        _coord = _startCoord;
        _access = new int[_size, _size];
 
        for (int i = 0; i < _size; i++)
        {
            for (int j = 0; j < _size; j++)
                _access[i, j] = KnightPaths((i, j)).Count;
        }
 
        Console.WriteLine($"Started at {PrintMove(_coord)}");
 
        while (true)
        {
            _access[_coord.y, _coord.x] = int.MaxValue;
            (int x, int y) predict = KnightPaths(_coord).OrderBy(x => --_access[x.y, x.x]).First();
            _coord = predict;
            Console.WriteLine($"{++_move,3} move: {PrintMove(_coord)}");
 
            if (_access[_coord.y, _coord.x] == 0)
            {
                Console.WriteLine(_move == _size * _size - 1 ? "Completed" : "Failed");
                break;
            }
        }
    }
 
    List<(int x, int y)> KnightPaths((int x, int y) coord)
    {
        var result = new List<(int x, int y)>();
 
        foreach (var move in knightMoves)
        {
            int dx = coord.x + move.x;
            int dy = coord.y + move.y;
 
            if (dx >= 0 && dx < _size && dy >= 0 && dy < _size)
                result.Add((dx, dy));
        }
 
        return result;
    }
 
    string PrintMove((int x, int y) move) => string.Format($"{(char)('A' + move.x)}{move.y + 1}");
}
 
class Program
{
    static void Main()
    {
        Knight knight = new Knight();
        knight.Start();
        Console.ReadKey();
    }
}
Добавлено через 12 минут
chelty, если что, в конструкторе можно задать начальные координаты коня и размер доски. Например, так:

C#
71
Knight knight = new Knight(0, 0, int.Parse(Console.ReadLine()));
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.01.2021, 21:34
Помогаю со студенческими работами здесь

Обойти шахматным конем все клетки шахматной доски, побывав на каждой клетке по одному разу
Здравствуйте, помогите пожалуйста Рекурсия, нужно обойти шахматным конем все клетки шахматной доски, побывав на каждой клетке по одному...

Провести ходом коня через не вырезанные клетки путь минимальной длины из одной заданной клетки шахматной доски в другую
Дана шахматная доска, состоящая из NхN клеток; несколько из них вырезано. Провести ходом коня через не вырезанные клетки путь минимальной...

Одноцветные клетки шахматной доски
Такая задача: Дано K клеток шахматной доски. Выяснить, или все они одного цвета. Входные данные Вы вводите с клавиатуры...

Цвет клетки шахматной доски.
Нужно оперделить, одного ли цвета эти клетки на шахматной доске: У меня получилось вот что: Dim massiv(0 To 7, 0 To 7) As...

Перевод из C# в C++. Клетки шахматной доски атакуемые ферзем
Всем привет! Имеется код на C#, с помощью которого на шахматную доску ставится ферзь, и атакованные клетки выделяются красным. Т.е. при...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru