Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Волновой алгоритм - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Контроль включаемых заголовочных файлов http://www.cyberforum.ru/cpp-beginners/thread949467.html
Всем привет! У меня родился следующий вопрос: как можно сделать так, чтобы подключаемый файл, при условии, что он уже был ранее подключен, не подключался второй (третий, четвертый...) раз?...
C++ C++ не получается я навичок Write a program that determines whether a number is lucky or not if sum of given six digit number's first three digits equals to the sum of the last three digits of that number. Below shown an... http://www.cyberforum.ru/cpp-beginners/thread949453.html
Нужно ли документировать проект? C++
Всем доброго вечера. Паттерны проектирования и Совершенный Код читать пока не планирую (так как начинающий), но некоторые вопросы узнать бы хотелось. Я решил написать одно приложение, чтобы...
Написать структуру для моделирования точек на плоскости C++
Написать структуру для моделирования точек на плоскости.Написать структуру,моделирующую четырехуголиник по двум точкам(левый верхний угол и правый нижний угол четырехугольника).Написать...
C++ винни пух и пятачок ! кто решал такую задачку? http://www.cyberforum.ru/cpp-beginners/thread949429.html
Винни-Пух и Пятачок нанялись защищать компьютерную сеть от хакеров, которые выкачивали из компьютеров секретную информацию. Компьютерная сеть Винни-Пуха и Пятачка состояла из связанных между собой...
C++ Описать структуру с именем STUDENT Помогите, пожалуйста Описать структуру с именем STUDENT, содержащую следующие поля: номер; фамилия и инициалы; номер группы (абревиатура специальности, курс); успеваемость (массив из пяти... подробнее

Показать сообщение отдельно
monolit
185 / 184 / 22
Регистрация: 24.03.2011
Сообщений: 667
Завершенные тесты: 1
16.09.2013, 14:28
Не про то я говорил, друг мой, не про то.
Рассказываю:
Создаешь два массива с элементами типа pair<int, int> - массивы координат.
Стартовая точка известна. Проверяешь вначале все точки вокруг стартовой и заносишь их в первый массив. Это - твоя стартовая волна. А затем в цикле:
Для каждой точки первого массива(т.е. волны) проверяешь все соседние, которые еще не участвовали в обработке(можно отдельно матрицу завести логическую, где уже обработанные точки помечать), и эти соседне необработанные заносишь во второй массив - это будет следующая волна.
После всего этого второй массив делаешь первым, первый-вторым, и новый второй очищаешь. И так до тех пор, пока в следующую волну не попадется конечная точка.
Ну, затем нужно сделать обратную трассировку - ну эт должно быть ясно...

А насчет твоего кода: вот здесь потенциальная опасность выхода заграницы массива
Цитата Сообщение от [O]Clic[K] Посмотреть сообщение
for(int i=0;i<M;i++)
{for(int j=0;j<N;j++)
{
if(RAB[i][j]==iter)
{
* * if(RAB[i+1][j]==50){
* * * * RAB[i+1][j]=iter+1;
* * * * cout<<setw(3)<<RAB[i+1][j];}
if(RAB[i-1][j]==50){
* * * * RAB[i-1][j]=iter+1;
* * * * cout<<setw(3)<<RAB[i-1][j];}
Например, при i=0 i-1=-1...
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru