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

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

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

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

29.05.2014, 16:36. Просмотров 205. Ответов 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;

}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2014, 16:36     Пожалуйста, расшифруйте код
Посмотрите здесь:

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

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

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

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

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

поясните пожалуйста код - C++
#include &lt;iostream.h&gt; #include &lt;fstream.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;iomanip.h&gt; ...

объясните пожалуйста код - C++
объясните пожалуйста код, желательно каждую строчку пояснить #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;sstream&gt; #include...

Посмотрите код пожалуйста... - C++
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main() { int n,*b,i,k; double x; float **M;// двухмерная...

Поправьте пожалуйста код. - C++
Всем доброго времени суток! Вот написал программу, а на защиту мнезадали её переделать, использую dorehile. вот собственно текст программы ...

Объясните пожалуйста код - C++
#include &lt;iostream&gt; template &lt;typename T&gt; struct NameOf {}; #define DEF_TYPENAME(type) template &lt;&gt; \ struct NameOf&lt;type&gt; {\ ...

Прокоментируйте код, пожалуйста - C++
В интернете нашел пример реализации алгоритма Лемпеля-Зива. помогите , пожалуйста , разобраться с кодом. #include &lt;vector&gt; #include...

пожалуйста, подправить код - 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) ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,996
29.05.2014, 16:38     Пожалуйста, расшифруйте код #2
оформите нормально и тэг поставьте, глаза ломаются об это.
Ответ Создать тему
Опции темы

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