


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