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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Paris1
0 / 0 / 0
Регистрация: 26.05.2014
Сообщений: 1
#1

Пожалуйста, расшифруйте код - C++

29.05.2014, 16:36. Просмотров 234. Ответов 1
Метки нет (Все метки)

Есть код программы. Программа вычисляет максимальный поток по алгоритму Форда-Фалкерсона . В программе есть цикл, педагог спрашивает, каким образом программа выходит из этого цикла. И почему addFlow всегда равняется единичке. Заранее спасибо.

#include <memory.h>

#include<conio.h>

#include <stdio.h>

#include <locale.h>

const int MAX_VERTICES = 40;

int NUM_VERTICES;

const int INFINITY = 10000;

int f[MAX_VERTICES][MAX_VERTICES];

int c[MAX_VERTICES][MAX_VERTICES];

int Flow[MAX_VERTICES];

int Link[MAX_VERTICES];

int Queue[MAX_VERTICES];

int QP, QC;

int FindPath(int source, int target)

{

QP = 0; QC = 1; Queue[0] = source;

Link[target] = -1;

int i;

int CurVertex;

memset(Flow, 0, sizeof(int)*NUM_VERTICES);

Flow[source] = INFINITY;

while (Link[target] == -1 && QP < QC)

{

CurVertex = Queue[QP];

for (i = 0; i<NUM_VERTICES; i++)

if ((c[CurVertex][i] - f[CurVertex][i])>0 && Flow[i] == 0)

{

Queue[QC] = i; QC++;

Link[i] = CurVertex;

if (c[CurVertex][i] - f[CurVertex][i] < Flow[CurVertex])

Flow[i] = c[CurVertex][i];

else

Flow[i] = Flow[CurVertex];

}

QP++;

}

if (Link[target] == -1) return 0;

CurVertex = target;

while (CurVertex != source)

{

f[Link[CurVertex]][CurVertex] += Flow[target];

CurVertex = Link[CurVertex];

}

return Flow[target];

}

int MaxFlow(int source, int target)

{

memset(f, 0, sizeof(int)*MAX_VERTICES*MAX_VERTICES);

int MaxFlow = 0;

int AddFlow;

do

{

AddFlow = FindPath(source, target);

MaxFlow += AddFlow;

} while (AddFlow >0);

return MaxFlow;

}

int main()

{

setlocale(LC_ALL, "Ukrainian");

int source, target;

printf("Ввести число вершин \n");

scanf_s("%d", &NUM_VERTICES);

printf("Ввести номера потока и стока \n");

scanf_s("%d %d", &source, &target);

int i, j;

printf("Матрица смежности \n");

for (i = 0; i<NUM_VERTICES; i++)

for (j = 0; j<NUM_VERTICES; j++)

scanf_s("%d", &c[i][j]);

printf("Max потiк ");

printf("%d\n", MaxFlow(source, target));

_getch();

return 0;

}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2014, 16:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Пожалуйста, расшифруйте код (C++):

Расшифруйте пожалуйста предикат - C++
Существует класс Person class Person { string Family, Name, Sex; int BirthDay,ExpTime; public: Person( char* f, ...

расшифруйте код printf () :%12.2f - C++
расшифруйте код printf () :%12.2f. Приведите пожалуйста примр программы с такой функцией printf () и таким кодом формата

Написать код для игры НИМ. проверьте пожалуйста тот ли это код - C++
#include &lt;string&gt; using namespace std; int compChoose(int markers); int userChoose(int markers); int...

Расшифруйте ошибку, пожалуста - C++
Список ошибок ( супердлинный) 1&gt;d:\проги\r\r\r.cpp(14): error C2784: std::basic_ostream&lt;_Elem,_Traits&gt; &amp;std::operator...

Расшифруйте 3 строчки кода - C++
const int SIZE = 100; char *ch = new char; char *x= {0}; Объясните, что здесь происходит, для чего {0} Так же как сделать...

Проверьте код пожалуйста - C++
Цель работы Создать программу, которая вычисляет значения функции заданного диапазона; необходимо организовать ввод границ интервала,...

1
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,039
29.05.2014, 16:38 #2
оформите нормально и тэг поставьте, глаза ломаются об это.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2014, 16:38
Привет! Вот еще темы с ответами:

Проверьте код пожалуйста - C++
В чем ошибка? Если он в ответе выдает только: Vvedite element massiva: A= #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include...

Объясните код пожалуйста - C++
FILE* fp = NULL; char* filename = &quot;m:\\2.txt&quot;; if ((fp = fopen(filename,&quot;r&quot;)) == NULL) cout&lt;&lt;&quot;Unable to open...

Проверьте пожалуйста код - C++
Программа должна проверить введенную строчку на соответствие слову как паролю.Условия Не меньше 8 символов, содержание латинских букв и...

пожалуйста, подправить код - C++
#include &lt;conio.h&gt; #include &lt;iostream&gt; #include&lt;stdio.h&gt; using namespace std; int sd(int n, int d = 1) { if(n == 0) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru