Программирование >>  Формирование пользовательского контейнера 

1 ... 93 94 95 [ 96 ] 97 98 99 ... 156


294 [ Главку

bool skip; используется при возврате

FlightlnfoО { from = ; to = ; distance = 0; skip = false;

Flightlnfo(string f, string t, int d) { from = f; to = t; distance = d; skip = false;

const int MAXDIST = 100000;

Находит рейсы с помощью метода наименьшей стоимости, class Optimal {

Этот вектор содержит информацию о рейсах.

vector<FlightInfо> flights;

Этот стек используется для возврата. stack<FlightInfo> btStack;

Этот стек содержит оптимальное решение. stack<FlightInfо> optimal;

int minDist;

Если есть рейс между from и to,

запоминает расстояние в dist.

Возвращает true, если рейс существует,

и false - в противном случае.

bool match(string from, string to, int &dist);

Версия для поиска с помощью метода наименьшей стоимости.



II При заданном from находит самый короткий рейс.

Возвращает true, если рейс найден,

и false - в противном случае.

bool find(string from, Flightlnfo &f);

public:

Конструктор Optimal 0 {

minDist = MAXDIST;

Помещает полеты в базу данных.

void addflight(string from, string to, int dist) { flights.pushback(FlightInfo(from, to, dist));

Показывает маршрут и общую длину, void route();

Отображает оптимальный маршрут, void Optimal::showQpt();

Определяет, есть ли маршрут между from и to. void findroute(string from, string to);

Возвращает true, если маршрут бьш найден, bool routefoundo

return btstack.size О != 0;

Показывает маршрут и его длину.

void Optimal::route О

stack<FlightInfo> optTenp; int dist = 0; Flightlnfo f;



296 лава>

Меняет порядок стека на противоположный для отображения маршрута, while(!btStack.enpty()) {

f = btStack.top();

optTenp.push(f);

btStack.popO ;

dist += f.distance;

Если короче, то запоминает этот маршрут, if(minDist > dist) {

optimal = optTenp;

minDist = dist;

Отображает оптимальный маршрут.

void Optimal::showCpt()

Flightlnfo f; int dist =0;

cout Optimal solution is:\n ;

Отображает оптимальный маршрут, while(!optimal.enpty()) {

f = optimal.top О;

optimal.popO ;

cout f.from to ;

dist += f.distance;

cout f.to endl;

cout Distance is dist endl;

Если есть рейс между from и to,

запоминает расстояние в dist.

Возврашает true, если рейс существует,

и false - в противном случае.



1 ... 93 94 95 [ 96 ] 97 98 99 ... 156

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика