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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Метод перебора. 
:(
    Опции темы
Djigit
Дата 15.7.2008, 02:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброго времени суток... дано поле MxN,случайным образом заполняется ноликами и единицами,далее случайным образом выбирается ячейка,если она равна нулю,меняем ее и все близлежащие на 9,если 1 - на 5... однако суть не в этом,код-то простой,но я реализовал его методом рекурсии... а еще нужно методом перебора,а он вылетел из головы,хоть убей не могу вспомнить...
вот решение рекурсией,именно тот кусочек кода

Код

bool CmassivDlg::Rek(int i,int j)
{
    if(mas[i][j]==0)
    {
        mas[i][j]=9;
        if(i>0&&mas[i-1][j]==0)
            Rek(i-1,j);
        if(i<M-1&&mas[i+1][j]==0)
            Rek(i+1,j);
        if(j>0&&mas[i][j-1]==0)
            Rek(i,j-1);
        if(j<N-1&&mas[i][j+1]==0)
            Rek(i,j+1);
        return true;
    }
    if(mas[i][j]==1)
    {
        mas[i][j]=5;
        if(i>0&&mas[i-1][j]==1)
            Rek(i-1,j);
        if(i<M-1&&mas[i+1][j]==1)
            Rek(i+1,j);
        if(j>0&&mas[i][j-1]==1)
            Rek(i,j-1);
        if(j<N-1&&mas[i][j+1]==1)
            Rek(i,j+1);
        return true;
    }
    return false;
}

--------------------
Бабло победит зло!!!
PM MAIL MSN   Вверх
compiler91
Дата 15.7.2008, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 18.6.2008
Где: Харьков, Украина

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



Код

        for(int i =0; i < m; ++i)
                for (int j = 0; j < n; ++j)
                        if (mas[i][j])  mas[i][j]=9;
                        else mas[i][j]=5;

?
PM MAIL   Вверх
jonie
Дата 15.7.2008, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



за тем лишь исключением что
Цитата

ее и все близлежащие на 9
думаю это то что имел в виду автор...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
compiler91
Дата 15.7.2008, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 18.6.2008
Где: Харьков, Украина

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



Ну..  Если,  массив "заполняется ноликами и единицами", то предложенный код отработает аналогично рекурсивному варианту автора...
Или я не прав?
Ждем автора smile 
PM MAIL   Вверх
xvr
Дата 17.7.2008, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(compiler91 @ 15.7.2008,  20:56)
Ну..  Если,  массив "заполняется ноликами и единицами", то предложенный код отработает аналогично рекурсивному варианту автора...
Или я не прав?
Ждем автора smile

Нет, не тоже самое:
Код

   0 1 2 3 4 5 6 7 
--+-----------------
0 |1 2 2 2 2 2 2 1
1 |2 2 1 1 1 2 2 2
2 |2 2 1 1 1 2 2 2
3 |2 2 1 1 1 2 2 2
4 |1 2 2 2 2 2 2 1

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

Хотя, если ТОЛЬКО нолики и единицы, то твой вариант аналогичен варианту автора, но почему то мне кажется, что он не этого хотел    smile 


Это сообщение отредактировал(а) xvr - 17.7.2008, 12:27
PM MAIL   Вверх
compiler91
  Дата 17.7.2008, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 18.6.2008
Где: Харьков, Украина

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



xvr,  ждем автора... или телепатов из отпускаsmile
А если серьезно, при наличии в массиве элементов отличных от нуля и единицы, слова 
Цитата
случайным образом заполняется ноликами и единицами
 лишние, но это моё виденье...


Цитата

Ждем автора  smile 

PM MAIL   Вверх
Djigit
Дата 18.7.2008, 03:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



все,я тут)))) вот,что я хотел,и реализовал рекурсией..но нужно еще методом перебора... если две ячейки находятся по диагонали,то они не считаются близлежащими... в моем коде с рекурсией все написано

user posted image
--------------------
Бабло победит зло!!!
PM MAIL MSN   Вверх
xvr
Дата 18.7.2008, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(Djigit @ 18.7.2008,  03:07)
все,я тут)))) вот,что я хотел,и реализовал рекурсией..но нужно еще методом перебора... если две ячейки находятся по диагонали,то они не считаются близлежащими... в моем коде с рекурсией все написано

user posted image

Ага, теперь понятно. Классический алгоритм заливки области цветом. 

Алгоритм приблизительно такой (не совсем перебор, но и не рекурсия):

Начало:
  •  Имеется список строк (номер строки, начальная и конечная позиция) клеток с заданным цветом
  •  От исходной точки производится поиск границ строки, найденная строка заносится в список

Для каждой строки из списка:
  •  Строка извлекается из списка, перекрашивается в нужный цвет
  •  Смотрим на строки выше и ниже извлеченной, находим в них диапазоны нужного цвета (если надо, расширяя влево и вправо), найденные диапазоны заносим в список
  •  Все повторяем

Еще один классический алгоритм (чистый перебор):

Начало: Перекрашиваем начальную точку
Повторяем для всех точек массива
  •  Если точка массива имеет нужный цвет (цвет исходной точки) и рядом есть перекрашенная точка - перекрашиваем ее
  •  Повторяем, пока была перекрашенна хотя бы одна точка

PM MAIL   Вверх
Djigit
Дата 18.7.2008, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



xvr,нет,друг))) я не заливал,заливка мне не нужна))) я залил скриншот уже в фотошопе,чтобы сразу бросались в глаза измененные после алгоритма ячейки)))
--------------------
Бабло победит зло!!!
PM MAIL MSN   Вверх
xvr
Дата 18.7.2008, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(Djigit @ 18.7.2008,  14:12)
xvr,нет,друг))) я не заливал,заливка мне не нужна))) 

Однако она есть
Цитата

я залил скриншот уже в фотошопе,чтобы сразу бросались в глаза измененные после алгоритма ячейки)))
 Единички на пятерки тоже в фотошопе менял? Если нет, то вот это и есть заливка.  smile 
Область еднинц заливается пятеркой, облась нулей - девяткой

PM MAIL   Вверх
Djigit
Дата 18.7.2008, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



аааааааа))))))))))) ты это имел ввиду))))))))) пардон))))))))))))
--------------------
Бабло победит зло!!!
PM MAIL MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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