Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
sit_com
1 / 1 / 1
Регистрация: 23.09.2017
Сообщений: 13
1

Конь должен обойти доску 8x8

24.09.2017, 12:52. Просмотров 253. Ответов 5
Метки нет (Все метки)

Привет, форумчане. Появилось задание провести коня через все шахматное поле становясь на каждую клетку лишь один раз. У меня получился такой код, но не знаю как сделать откат его шагов и почему-то происходит проблема с подсчетом пройденных клеточек (он бывает что повторяет цифры). Помогите пожалуйста
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
#include <stdio.h>
#include <locale.h>
 
#define N  8
 
void ChessGo(int[][N], int, int, int);
 
int horseX[8] = { -2, -1, 1, 2, 2, 1, -1, -2 };
int horseY[8] = { -1, -2, 2, 1, -1, -2, 2, 1 };
 
 
int main()
{
    setlocale (LC_ALL, "RUS");
    int arr[N][N];
 
    int k = 0;
 
    for (int i = 0; i < N; ++i)
        for (int j = 0; j < N; ++j)
            arr[i][j] = 0;
 
    int numVert = 0, numGor = 0;
    while (numGor < 1 || numGor > 8) {
        printf_s("Введите число от 1 до 8 по горизонтали: ");
        scanf_s("%d", &numGor);
    }
    while (numVert < 1 || numVert > 8) {
        printf_s("Введите число от 1 до 8 по вертикали: ");
        scanf_s("%d", &numVert);
    }
 
    puts("");
 
    ChessGo(arr, numGor - 1, numVert - 1, k);
 
    for (int i = 0; i < N; ++i)
    {
        for (int j = 0; j < N; ++j)
        {
            printf_s("%d\t", arr[i][j]);
        }
        printf_s("\n\n\n");
    }
    
    return 0;
}
 
 
void ChessGo(int D[][N], int x, int y, int k)
{
    int sx, sy;
    k++;
    D[y][x] = k;
    if (k == N * N)
        return;
 
    for (int i = 0; i < 8; ++i)
    {
        sx = x + horseX[i];
        sy = y + horseY[i];
 
        if (sx >= 0 && sx < N && sy >= 0 && sy < N && D[sy][sx] == 0)
        {
            x = sx;
            y = sy;
            ChessGo(D, x, y, k);
        }
    }
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2017, 12:52
Ответы с готовыми решениями:

Нарисовать шахматную доску 8x8
Вообщем нужно создать программу которая выводит нарисованную шахматную доску 8x8.Если есть код с...

Нарисовать шахматную доску, пометив крестиками все поля, которые «бъет» конь
Программа. Даны две литеры—латинская буква (от а до h) и цифра (от 1 до 8), например, а2 или g5....

Программа, в которой конь заполнит ходами шахматную доску, не наступив на клеточку дважды
Всем доброго времени суток!!! Мне нужно написать программу, в которой конь заполнит ходами...

Обойти шахматную доску ходом коня
Обязательные условия: 1. Рекурсивный алгоритм. 2. Размер доски вводит пользователь. 3....

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

5
MansMI
1453 / 1162 / 550
Регистрация: 08.01.2012
Сообщений: 4,509
25.09.2017, 19:19 2
Цитата Сообщение от sit_com Посмотреть сообщение
D[y][x] =
уходя за собой чистить надо?
0
sit_com
1 / 1 / 1
Регистрация: 23.09.2017
Сообщений: 13
25.09.2017, 19:23  [ТС] 3
MansMI, Да
0
MansMI
1453 / 1162 / 550
Регистрация: 08.01.2012
Сообщений: 4,509
29.09.2017, 10:10 4
ну как, получилось?
0
sit_com
1 / 1 / 1
Регистрация: 23.09.2017
Сообщений: 13
29.09.2017, 10:14  [ТС] 5
Цитата Сообщение от MansMI Посмотреть сообщение
ну как, получилось?
пробовал, не особо
0
MansMI
1453 / 1162 / 550
Регистрация: 08.01.2012
Сообщений: 4,509
29.09.2017, 10:22 6
ни одна из 64 клеток не дает приемлемое по времени решение?
0
29.09.2017, 10:22
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2017, 10:22

Задача о коне Аттилы. Конь должен дойти до неприятельского короля
Задача о коне Аттилы («Трава не растет там, где ступил мой конь!»). На шахматной доске стоят...

В левом нижнем углу шахматной доски размером m x n помещена ладья. Требуется обойти ладьей доску, проходя чере
В левом нижнем углу шахматной доски размером m x n помещена ладья. Требуется обойти ладьей доску,...

Какое наименьшее количество ходов должен сделать конь, чтобы попасть на заданную клетку
На шахматной доске NxN в клетке (x1, y1) стоит голодный шахматный конь. Он хочет попасть в клетку...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru