Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> просто С++, прошу помощь зала 
:(
    Опции темы
olegtikh
Дата 17.2.2003, 02:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 16.2.2003

Репутация: нет
Всего: нет



Спасибо за отклики, соседи единицы такие: left, right, up, down,
right-up, right-down, left-up, left-down. Я понимаю вы здесь все крутые,
а ссылки на алгоритмы не даете. Если бы я знал код, то к Вам бы не
обращался. Но все равно спасибо за реакцию!
PM MAIL   Вверх
olegtikh
Дата 17.2.2003, 03:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 16.2.2003

Репутация: нет
Всего: нет



А вот функция которая не работает так как надо, rezult[] ето глобальный
массив в который записывается результат. L это следующий ход,
x_ , y_ позиция клетки.
PM MAIL   Вверх
olegtikh
Дата 17.2.2003, 03:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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);
}
PM MAIL   Вверх
Alex101
Дата 17.2.2003, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва

Репутация: нет
Всего: 10



Все же решил с рекурсией?smile.gif
Первый вопрос: Пятном считается совокупность клеток не только по горизонтали-вертикали, но и по диагонали? Ежели так, то ругательств по поводу диагоналей не будетsmile.gif
Код
if (arr[x_ + 1][y_] == 0) find(L,x_+1,y_);

А это для чего? (Это только один из твоих вариантов)
Для чего искать дальше, ежели уже ничего не нашли?
Ищем дальше в случае ненулевой клетки.
Или ты просто дальше ищешь следующие пятна? Тогда снова надо просматривать таблицу, перед этим найденное пятно должно быть удалено.

А вообще, по поводу готовых программ на форуме уже говорили. Здесь скажут, что именно у тебя неправильно или натолкнут на идею.
А написать готовое решение - это уже в разделе "Работа". (Ну или кому совсем нечего делать)
2 Step
Цитата
ну, у каждого свои подходы

У меня подход универсальный - будет работать всегда, в случае рекурсии может не хватить стека.

Это сообщение отредактировал(а) Alex101 - 17.2.2003, 08:00


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0380 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.