|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.07.2008, 11:37 | #1 |
Регистрация: 16.07.2008
Сообщений: 4
|
Помогите решить логическую задачу!!!
Задача состоит вот в чём: у нас есть две матрицы(размером скажем так 5*5). В каждой матрице есть набор цифр, и одна пустая клетка. Цифри в матрицах совпадают(тоесть если в первой есть три "6"-и, то и во второй тоже должно быть три "6"-и), но порядок размещения отличаеться в каждой матрице. Пустые клетки тоже отличаються размещением. Задача состоит в том, чтобы "передвигаем" цифр во второй матрице(двигать можно только вертикально или горизонтално, но НЕ по диогонали) получить матрицу №2,такую чтобы она была похожа на матрицу №1. Если в укороченом виде, то это игры пятнашки, вот только цифры тут идут не от "1" до "15", а цифры могут поворяться. Матрица №1 выступает как образец, под который надо настроить матрицу №2.
Значит в начален програмы мы должны задать элементы обеих матриц, а вконце програмы мы должны получить файл(текстовый), в котором описано как двигать элементы второй матрицы(Например:Element[1.4] to right, Element[3.2] to Up и т.д.) Я прошу помощи в виде алгоритма, програму я сам сделаю... |
16.07.2008, 15:37 | #2 |
Пользователь
Регистрация: 06.01.2008
Сообщений: 83
|
Вроде так должно работать
Пока массивы не равны, сравниваем по очереди каждый элемент 2о массива с 1м.Если элементы не равны,тогда смотрим положение элемента в 1м массиве (строка, столбец) и сравниваем со вторым. Смотрим строку - если меньше в цикле перемещаем элемент вниз, больше - перемещаем вверх, пока строка не совпадет. потом аналогичные действия со столбцом. И так делать с каждым элементом, пока массивы не станут равны. Попробуй вроде должно получиться.
Прогрессирующий чайник..
|
16.07.2008, 16:40 | #3 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Так не получится - ты забыл про Цитата:
|
||
16.07.2008, 17:16 | #4 |
Пользователь
Регистрация: 06.01.2008
Сообщений: 83
|
Хм.. а есть ограничения на число? если именно решалка игры 15 - пустую клетку обзываем нулем, и не паримся =)
Пустая клетка в матрице чисел, должна быть числом. Если я конечно не совсем еще дерево, у пустой клетки должно быть какое то значение. И это значение так же можно присваивать Даже если рассматривать матрицу не из чисел а из строк, и пустую клетку обозначать ' ', принцип не меняется. Нам не важно, что в элементе, нам важно чтобы они были равны!
Прогрессирующий чайник..
Последний раз редактировалось The_Darkness; 16.07.2008 в 17:26. |
16.07.2008, 17:55 | #5 |
Пользователь
Регистрация: 24.05.2008
Сообщений: 25
|
Нашел алгоритм с кодом для игры пятнашки. Хочу только заметить, что бывают нерешаемые комбинации.
http://articles.org.ru/cn/showdetail.php?cid=5956 |
16.07.2008, 18:40 | #6 |
Пользователь
Регистрация: 06.01.2008
Сообщений: 83
|
Уважаемые, каким образом производится перемещение?? Если перемещать можно, просто меняя местами блоки, это одно. Если перемещать можно только в пустую клетку, это же совсем другая задача!И тогда мой алгоритм в корне не верен. Поясните пожалуйста вопрос с перемещением.
Прогрессирующий чайник..
|
16.07.2008, 18:46 | #7 |
Пользователь
Регистрация: 06.01.2008
Сообщений: 83
|
Для перемещения только в пустой блок, нужно просто соответствующе оформить смену блоков местами(то есть сначала мы должны переместить пустой блок и т.д.) в принципе сверх сложного ничего нет, надо просто подумать =)
Прогрессирующий чайник..
|
16.07.2008, 20:03 | #8 |
Пользователь
Регистрация: 24.05.2008
Сообщений: 25
|
|
16.07.2008, 20:19 | #9 | |
Пользователь
Регистрация: 06.01.2008
Сообщений: 83
|
Цитата:
Прогрессирующий чайник..
|
|
16.07.2008, 21:01 | #10 |
Регистрация: 16.07.2008
Сообщений: 4
|
Большое спасибо embedder ... Хотя этот алгоритм и не совсем то что мне нужно, но и с его помощью я смогу что-нибудь сделать. Также большое спасибо всем кто откликнулся... Вижу задачу вы поняли правильно, нужно перемещать только в пустую клетку. The_Darkness идея с "0" мне понравилась, учту. Но в задаче есть одна маленькая но важная заковыка, нужно все это проделать за минимальное количество передвижений.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите решить задачу, please! | CRUMB | Помощь студентам | 3 | 08.12.2008 18:02 |
Помогите решить задачу | Chuvak | Общие вопросы C/C++ | 3 | 07.06.2008 09:48 |
Помогите решить задачу. | Shady | Общие вопросы Delphi | 7 | 10.11.2007 23:09 |