Top.Mail.Ru
Ответы
Аватар пользователя
11лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Вопрос по программированию (алгоритм)

Здравствуйте!
Решаю задачу обход конем всей шахматной доски размера n=8, конь располагается в правом
нижнем углу, необходимо пройти все шахматные клетки без повторений. Подготовил код на С

#include <stdio.h>

#include <stdlib.h>

#include <iostream>

using
namespace std;

//сама функция преборазования

//.. свободные
клетки обозначим * а уже занятые минусом
-

Char** skok(int x, int y, int n,char** h)

{

If(h[x][y]=='*' && 0<x<n &&
0<y<n)

{h[x][y]='-';


// двигаемся
на две клетки : вверх, вниз, влево, вправо а потом: одна клетка //влево или
вправо или двигаемся на одну клетку : вверх, вниз, влево, //вправо, а потом на
две клетки: вправо или влево, необходимо вызвать //рекурсивно функцию Skok

skok(x+2,y+1,n,h);

skok(x-2,y+1,n,h);

skok(x-2,y-1,n,h);

skok(x-1,y-2,n,h);

skok(x-1,y+2,n,h);

skok(x+1,y-2,n,h);

skok(x+1,y+2,n,h);



skok(y-1,x+2,n,h);

skok(y-1,x-2,n,h);

skok(y+1,x-2,n,h);

skok(y+1,x+2,n,h);

skok(y-2,x-1,n,h);

skok(y-2,x+1,n,h);

skok(y+2,x-1,n,h);

skok(y+2,x-1,n,h);

..у меня
зависает программа, так же совмещал рекурсивный вызов функций с return.

}

Else {

Return m;

}

}

int main(int argc, char** argv)

{

char** a;

int n=8;

char Korobok[n][n];

a= new char*[n];

for(int i=0;i<n;i++)

{ a[i]=new char[n]; }

// наполнение
массива звездочками

for(int i=0;i<n;i++)

{

for(int j=0;j<n;j++)

{

a[i][j]=Korobok[i][j]='*';

}

} //Функция
a=skok(7,7,n,a);

//Вывод результата
работы функции

for(int i=0;i<n;i++)

{

for(int j=0;j<n;j++)

{

cout<<a[i][j];

}

cout<<'\n';

}

Return 0;

}

Спасибо за
внимание, =)

Дополнен

ссылка на исходный код в формате *.cpp http://files.mail.ru/A6A29817B1D341729722CB694FCA73BB

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
11лет

1. Код выкладывай на pastebin.com - Ответы уничтожают разметку.
2. Куча несуществующих типов и ключевых слов (большие буквы)
3. 0<x<n - бред, а не условие.
4. Все-таки надо сначала проверить, попадает ли конь на поле, а потом - что на этом поле стоит.
5. Непонятно, почему столько вызовов skok - у коня вообще-то максимум 8 ходов.
6. Так ты найдешь какой-то маршрут, заканчивающийся отсутствием ходов, но не полный обход.

Аватар пользователя
Ученик
11лет

эм что? , в чем вопрос, ты ведь сам решил задачу, разве нет?