left> Invalidate (false); В
}
В
void CKurs_LipinDlg :: OnButton2 ()
{
m_list1.ResetContent ();
В
for (int i = 0; i <29; i + +)
flag_select [i] = false;
flag_Bpoint = false;
begin_point = -1;
count_selected = 0;
flag_draw = false;
Invalidate (false);
В
}
В
void CKurs_LipinDlg :: OnOK ()
{
m_list1.ResetContent ();
В
n = count_selected;
В
if (n <= 1)
{
MessageBox ("Будь ласка, виберіть не менше 2 міст. "); p align=left> return;
}
sel_city = new int [n];
int count = 0;
for (int i = 0; i <29; i + +)
if (flag_select [i]) sel_city [count + +] = i;
В
for (i = 0; i
if (sel_city [i] == begin_point)
{
int tmp = sel_city [0];
sel_city [0] = sel_city [i];
sel_city [i] = tmp;
}
В
table = new int * [n];
for (i = 0; i
table [i] = new int [n];
В
for (i = 0; i
for (int j = 0; j
{
if (i> = j)
{
table [i] [j] = table [j] [i] = tableAllCity [sel_city [i]] [sel_city [j]];
}
}
В
bool * flag = new bool [n];// заповнення ознак відвідування міст
flag [0] = true;
for (i = 1; i В
unsigned int * cur_path = new unsigned int [n +2];
min_path = new unsigned int [n +2];
В
// заповнення матриць мінімального шляху і поточного шляху
min_path [0] = min_path [n] = 1; min_path [n +1] = 0;
for (i = 1; i
{
min_path [i] = i +1; min_path [n +1] + = table [i-1] [i];
cur_path [i] = 0;
} min_path [n +1] + = table [min_path [n-1] -1] [min_path [n] -1 ]; <В
cur_path [n +1] = 0;
cur_path [0] = cur_path [n] = 1;
В
m_len = "Будь ласка, почекайте: nідут обчислення ... ";
UpdateData (false);
В
recursiv (flag, cur_path, 1);// виклик рекурсивної функції */
В
flag_draw = true;
Invalidate (false);
В
}
В
void CKurs_LipinDlg :: recursiv (bool flag [], unsig...