Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2010, 12:47   #1
Ker_33rus
Пользователь
 
Регистрация: 17.10.2009
Сообщений: 46
По умолчанию

ребят подскажите алгоритм и через чего лучше реализовывать, желательно предлагать самые простые варианты, подскажите пожалуста потом сделаю нароботки и чую продолжу спрашивать че да как

Ребят хотя бы алгоритм, а то шахматы не мое

Последний раз редактировалось Stilet; 17.03.2010 в 16:04.
Ker_33rus вне форума Ответить с цитированием
Старый 18.03.2010, 07:09   #2
Markiz
 
Регистрация: 24.11.2007
Сообщений: 4
По умолчанию

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

Но это скорее-всего по StackOverflow вывалится. У такой задачи обязано быть красивое решение
Markiz вне форума Ответить с цитированием
Старый 18.03.2010, 07:32   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
У такой задачи обязано быть красивое решение
Один мой знакомый рассудил так. Ход коня образует катеты прямоугольного треугольника, стало быть нужно просто рассчитать расстояние от точек как гипотенузу главного треугольника, в который вхотят маленькие треугольникики, являющиеся ходами коня. Таким образом получив их наименьшее кол-во получаем собственно сам путь.
Дальнейшие его рассуждения я не помню, но он задачу эту именно так решил. Преподаватель был в шоке и отослал решение на кафедру математики
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.03.2010, 09:33   #4
Ker_33rus
Пользователь
 
Регистрация: 17.10.2009
Сообщений: 46
По умолчанию

Код:
#include <iostream>  
using namespace std;
int main()
{
	int desk[8][8] = {10}; // доска 8х8. пусть незанятые клетки будут равны 10
	int nkx, nky, kkx, kky, x, y, n;
	cout<<"Vvedite na4alnoe pologenie kon9I\n";
	cin>>nkx;
	cin>>nky;
	cout<<"Vvedite kone4noe pologenie kon9I\n";
	cin>>kkx;
	cin>>kky;
	x=nkx;
	y=nky;
	n=1;
	if (desk[x+3][y+1]==10)
	{
		desk[x+3][y+1]=n;
	}
	if (desk[x+3][y-1]==10)
	{
		desk[x+3][y-1]=n;
	}
	if (desk[x-3][y+1]==10)
	{
		desk[x-3][y+1]=n;
	}
	if (desk[x-3][y-1]==10)
	{
		desk[x-3][y-1]=n;
	}
	if (desk[x+1][y-3]==10)
	{
		desk[x+1][y-3]=n;
	}
	if (desk[x+1][y+3]==10)
	{
		desk[x+1][y+3]=n;
	}
	if (desk[x-1][y-3]==10
	{
		desk[x-1][y-3]=n;
	}
	if (desk[x-1][y+3]==10)
	{
		desk[x-1][y+3]=n;
	}
for (int i=0; i<8; i++)
{
	for(int j=0; j<8; j++)
	{
		if (desk[i][j]==1)
		{
			
		}
}
ребят помогите с кодом застопорился чего дальше в последнем иф писать
Ker_33rus вне форума Ответить с цитированием
Старый 18.03.2010, 12:09   #5
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Если задача состоит найти за какое наименьшее кол-во ходов конь дойдет из точки А в точку Б, то используй поиск в ширину.
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 18.03.2010, 12:25   #6
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Самый оптимальный по скорости вариант: хранить в файле решения для 504 комбинаций (с учётом поворотов и отражений доски) начального и конечного пункта.

UPD: если брать не положение пунктов относительно краёв доски, а положение одного относительно другого, остаётся всего лишь 35 вариантов. По-моему, это даже проще рекурсивного алгоритма.

Последний раз редактировалось ds.Dante; 18.03.2010 в 12:33.
ds.Dante вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Две проги. Порезка труб и движения коня по шахматной доске. По какому принципу работают такие проги? sadf Общие вопросы C/C++ 4 06.03.2010 20:04
монетки на шахматной доске! grimm_jow Общие вопросы C/C++ 2 31.01.2010 10:27
Не могу вписать цифры в клетки (игра судоку) Lees27 Общие вопросы C/C++ 1 18.11.2009 17:28
Клетки в listView разным цветом Altera Компоненты Delphi 9 24.09.2009 16:08
Поиск пути на шахматной доске ходом ферзя A!eI{S@nDrA Помощь студентам 2 16.06.2009 09:51