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

Метод Фогеля - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Списки типа стек. http://www.cyberforum.ru/cpp-beginners/thread68698.html
Помогите написать прогу!! Из введенных целых чисел сформировать два списка типа стек с одинаковым количеством элементов. Разработать фцнкцию, какая объеднюе два стеки с попарно взятыми элементами...
C++ Cортировка двумерного массива. есть двумерный массив заполненный случайными числами. нужно с помощью 3-х циклов (for, while, do while) отсортировать элементы по возрастанию. помогите плз. http://www.cyberforum.ru/cpp-beginners/thread68693.html
Графы. Проехать из A в B через C. C++
Народ,помогите!!!! Вот задача- .Определить, можно ли в заданно системе односторонних дорог проехать из города А в город В таким образом, чтобы посетить город С и не проезжать никакой дороги более...
Поиск с возвращением. C++
Доброго времени суток, ув. форумчане! В общем, пришёл я с проблемой следующего характера: не получается реализовать алгоритм поиска с возвращением. Надеюсь что меня просветят тут. Буду очень...
C++ Текстовый редактор. Зашифровать текст. http://www.cyberforum.ru/cpp-beginners/thread68607.html
подскажите пожалуйста не пойму что надо сделать??? "файл должен храниться в зашифрованном виде: над каждым симво-лом файла произвести операцию «ИСКЛЮЧАЮЩЕЕ ИЛИ» с кодом предыдущего символа"
C++ В чём ошибка? //#include <stdafx.h> #include <iostream> #include <conio.h> using namespace std; } int sum(int*A,int B) {int s, i,j; s=0; for(i=0;i<B;i++) подробнее

Показать сообщение отдельно
Rulik
0 / 0 / 0
Регистрация: 29.11.2009
Сообщений: 3

Метод Фогеля - C++

29.11.2009, 21:30. Просмотров 4295. Ответов 7
Метки (Все метки)

Помогите дописать метод фогеля, я не сильно разбираюсь, тут написал токо сортировку введеных масивов для поиска минимальноных елементов, и занес их в отдельные масивы. а вот что дальше несильно понимаю.
Вот сам метод Фогеля:
При определении опорного плана транспортной задачи методом аппроксимации Фогеля на каждой итерации по всем столбцам и по всем строкам находят разность между двумя записанными в них минимальными тарифами. Эти разности записывают в специально отведенных для этого строке и столбце в таблице условий задачи. Среди указанных разностей выбирают минимальную. В строке (или столбце), которой данная разность соответствует, определяют минимальный тариф. Клетку, в которой он записан, заполняют на данной итерации.
Если минимальный тариф одинаков для нескольких клеток данной строки (столбца), то для заполнения выбирают ту клетку, которая расположена в столбце (строке), соответствующем наибольшей разности между двумя минимальными тарифами, находящимися в данном столбце (строке).

А вот то что я написал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <iostream.h>
#include <conio.h>
void main(){
 cout<<"Input size masiva nxm";
 int m,n,i,j;
 float t;
 cin>>n>>m;
 cout<<"Input masiv potrebiteliv";
 float *l,*p1,*p2,*k,*p11,*p22;
 l=new float[n];
 for(i=0;i<n;++i)
 cin>>l[i];
 cout<<"Input masiv posta4alnikiv";
 k=new float[m];
 for(i=0;i<m;++i)
 cin>>k[i];
 cout<<"Input masiv";
 float **mas;
 mas=new float*[n];
 for (i=0;i<n;i++){
    mas[i]=new float[m];
    for (j=0;j<m;j++)
       cin>>mas[i][j];}
 float **mas1;
 mas1=new float*[n];
 for (i=0;i<n;i++){
    mas1[i]=new float[m];
    for (j=0;j<m;j++)
       mas1[i][j]=mas[i][j];}
 float **mas2;
 mas2=new float*[n];
 for (i=0;i<n;i++){
    mas2[i]=new float[m];
    for (j=0;j<m;j++)
       mas2[i][j]=mas[i][j];}
 int flag;
 for (i=0;i<n;i++){
    do {
      flag=0;
      for (j=0;j<m-1;j++){
         if (mas1[i][j]>mas1[i][j+1]){
         t=mas1[i][j];
         mas1[i][j]=mas1[i][j+1];
         mas1[i][j+1]=t;
         ++flag;}}}
    while(flag);}
 p1=new float[n];
 for(i=0;i<n;i++){
 t=mas1[i][1]-mas1[i][0];
 p1[i]=t;}
 for (j=0;j<m;j++){
    do {
      flag=0;
      for (i=0;i<n-1;i++){
         if (mas2[i][j]>mas2[i+1][j]){
         t=mas2[i][j];
         mas2[i][j]=mas2[i+1][j];
         mas2[i+1][j]=t;
         ++flag;}}}
    while(flag);}
 p2=new float[m];
 for(i=0;i<m;++i){
 t=mas2[1][i]-mas2[0][i];
 p2[i]=t;}
 p11=new float[n];
 p22=new float[m];
 for(i=0;i<n;++i)
    p11[i]=p1[i];
 for(i=0;i<m;++i)
    p22[i]=p2[i];
 do{flag=0;
   for(i=0;i<n;++i){
      if(p11[i]>p11[i+1]){
        t=p11[i];
        p11[i]=p11[i+1];
        p11[i+1]=t;
        ++flag;}}}
 while(flag);
 do{flag=0;
   for(i=0;i<m-1;++i){
      if(p22[i]>p22[i+1]){
        t=p22[i];
        p22[i]=p22[i+1];
        p22[i+1]=t;
        ++flag;}}}
 while(flag);
 for(i=0;i<m;++i){ delete[] mas1[i];
 delete mas[i];
 delete mas2[i];}
 delete[] mas1;
 delete[] p1;
 delete[] p2;
 delete[] mas;
 delete[] mas2;
 delete[] l;
 delete[] k;
 delete[] p11;
 delete[] p22;
 getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.