Реализовать алгоритм Прима для создания минимального по стоимости связующего дерева.
С Реализовать алгоритм Прима для создания минимального по стоимости связующего дерева.
#include #include int a,b,u,v,n,i,j,ne=1; int visited[10]={0},min,mincost=0,cost[10][10]; void main() { clrscr(); cout > n; cout > cost[i][j]; if( cost[i][j]==0 ) cost[i][j] = 999; } // where is the starting brace ??? visited[1]=1; cout << "\n"; while( ne < n ) { for( i=1, min=999; i <= n; i++ ) for( j=1; j <= n; j++ ) if( cost[i][j] < min ) if( visited[i] != 0 ) { min=cost[i][j]; a=u=i; b=v=j; } if( visited[u] == 0 || visited[v] == 0 ) { cout << "\n Edge: " << ne++ << "(" << a << "," << b << ") cost: " << min; mincost += min; visited[b] = 1; } cost[a][b] = cost[b][a] = 999; } cout << "\n Minimun cost= " << mincost; getch(); }
Что я уже пробовал:
Кто-нибудь, пожалуйста, объясните эту программу строка за строкой...
Richard MacCutchan
Вам не нужно построчное объяснение, так как первые несколько строк даже не будут компилироваться. Я предлагаю вам начать с изучения ваших заметок или руководства по C++.
Rick York
Использование переменных с именами min или max не очень хорошая идея, потому что есть два часто используемых макроса с этими именами, и вы можете столкнуться с коллизией, приводящей к нарушению кода. Кроме того, даже если вам не нужны фигурные скобки для отдельных операторов, это хорошая идея, чтобы иметь их для повышения ясности кода. Кроме того, они будут там, если/когда вам нужно будет добавить операторы внутри циклов или условных выражений.
Rick York
Почему мы должны тратить время на то, чтобы объяснить вам что-то, когда вы можете потратить то же самое время на изучение этого? Вам нужно поработать с учебником по c++ или найти кого-то, кто готов обучить вас этому языку. Просьба о построчном объяснении вряд ли приведет к нему.