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

Восстановление предков обхода в ширину - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Контейнер deque http://www.cyberforum.ru/cpp-beginners/thread1072429.html
Задание:(используя контейнер deque) ввести последовательность натуральных чисел,у конце которой 0.Не сохраняя всей последовательности в памяти, вывести порядковые номера крупнейших цифр...
C++ Каков смысл в "куче"? Всем привет! Прогуглил все вдоль и поперек, прочитал достаточно инфы, но так и не понял где, как и зачем мне может понадобиться создавать из последовательности элементов кучу... Понял что... http://www.cyberforum.ru/cpp-beginners/thread1072419.html
Разбить программу на функции C++
объясните, пожалуйста, как эту программу разбить на три функции: ввод, обработка, вывод. глобальные переменные использовать нельзя. в таком виде все работает как надо ) #include <iostream> using...
Вместо значений массива в cout выводит адреса C++
Помогите пожалуйста! Вместо значений массива в cout выводит адреса #include<iostream> #include<conio.h> #include <iomanip> #include <math.h> #include <fstream> /*void WriteComplex(char *...
C++ Вычислить площадь треугольника и вывести на экран http://www.cyberforum.ru/cpp-beginners/thread1072384.html
Директивы препроцессора и функции printf () и scanf () Спасайте товарищи,а то сессию завалю((
C++ Написать (переделать) программу с использованием ссылок в качестве параметров функций для нахождения минимального элемента из 3-х заданных Просто нахождение написал. Подскажите как использовать ссылки (&) в качестве параметров функций. #include "stdafx.h" #include "iostream" using namespace std; int _tmain(int argc, _TCHAR*... подробнее

Показать сообщение отдельно
salam
163 / 144 / 12
Регистрация: 10.07.2012
Сообщений: 734
16.01.2014, 16:07
традиционно заводим массив предков p[i][j] - клетка, из которой мы попали в клетку с координатами (i; j). очевидно, при bfs у каждой клетки может быть только один предок, так что все ок.
считается хорошей практикой в таких задачах (шахматных, например) ввиду того, что перемещения при обходах имеют нетривиальный характер (например, ход коня) заводить еще массив указателей на функции, которые будут осуществлять тот или иной ход.
восстановление ответа выглядит просто. например, как мы попали из (1; 1) в (i; j):
C++
1
2
3
4
5
6
p[1][1] = (-1; -1);
int ni = i, nj = j;
while(ni != -1 || nj != -1) {
   cout << (ni; nj) << endl;
   (ni; nj) <-- p[ni][nj];
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru