![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| olegtikh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 16.2.2003 Репутация: нет Всего: нет |
Спасибо за отклики, соседи единицы такие: left, right, up, down,
right-up, right-down, left-up, left-down. Я понимаю вы здесь все крутые, а ссылки на алгоритмы не даете. Если бы я знал код, то к Вам бы не обращался. Но все равно спасибо за реакцию! |
|||
|
||||
| olegtikh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 16.2.2003 Репутация: нет Всего: нет |
А вот функция которая не работает так как надо, rezult[] ето глобальный
массив в который записывается результат. L это следующий ход, x_ , y_ позиция клетки. |
|||
|
||||
| olegtikh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 16.2.2003 Репутация: нет Всего: нет |
void find(int L,int x_, int y_)
{ //L = x_ + y_; result[x_ + y_] = L; if(L == ROWS*COLS) exit(0); if(arr[x_ + 1][y_] == 1) { find(L + 1,x_ + 1,y_); //right } else if (arr[x_ + 1][y_] == 0) find(L,x_+1,y_); if(arr[x_ - 1][y_] == 1) { find(L + 1,x_ - 1,y_); //left } else if (arr[x_ - 1][y_] == 0) find(L,x_ - 1,y_); if(arr[x_][y_ + 1] == 1) { find(L + 1,x_,y_ + 1); //up } else if(arr[x_][y_ + 1] == 0) find(L,x_,y_ + 1); if(arr[x_][y_ - 1] == 1) { find(L + 1,x_,y_ - 1); //down } else if(arr[x_][y_ - 1] == 0) find(L,x_,y_ - 1); if(arr[x_ + 1][y_ + 1] == 1) { find(L + 1,x_ + 1,y_ + 1);//right - up } else if(arr[x_ + 1][y_ + 1] == 0) find(L,x_ + 1,y_ + 1); if(arr[x_ + 1][y_ - 1] == 1) { find(L + 1,x_ + 1,y_ - 1);//rihgt-down } else if(arr[x_ + 1][y_ - 1] == 0) find(L,x_ + 1,y_ - 1); if(arr[x_ - 1][y_ + 1] == 1) { find(L + 1,x_ - 1,y_ + 1);//left-up } else if(arr[x_ - 1][y_ + 1] == 0) find(L,x_ - 1,y_ + 1); if(arr[x_ - 1][y_ - 1] == 1) { find(L + 1,x_ - 1,y_ - 1);//left-down } else if(arr[x_ - 1][y_ - 1] == 0) find(L,x_ - 1,y_ - 1); } |
|||
|
||||
| Alex101 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 891 Регистрация: 8.4.2002 Где: Москва Репутация: нет Всего: 10 |
Все же решил с рекурсией?
Первый вопрос: Пятном считается совокупность клеток не только по горизонтали-вертикали, но и по диагонали? Ежели так, то ругательств по поводу диагоналей не будет
А это для чего? (Это только один из твоих вариантов) Для чего искать дальше, ежели уже ничего не нашли? Ищем дальше в случае ненулевой клетки. Или ты просто дальше ищешь следующие пятна? Тогда снова надо просматривать таблицу, перед этим найденное пятно должно быть удалено. А вообще, по поводу готовых программ на форуме уже говорили. Здесь скажут, что именно у тебя неправильно или натолкнут на идею. А написать готовое решение - это уже в разделе "Работа". (Ну или кому совсем нечего делать) 2 Step
У меня подход универсальный - будет работать всегда, в случае рекурсии может не хватить стека. Это сообщение отредактировал(а) Alex101 - 17.2.2003, 08:00 -------------------- С уважением, А. Фролов. |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |