c++ 最小生成树之prim算法
来源:互联网 发布:治疗法术升级数据 编辑:程序博客网 时间:2024/06/03 17:53
//最小生成树#include <iostream>#include <stdio.h>#include <queue>using namespace std;#define MAX_LINE 7char tree[MAX_LINE][MAX_LINE]={{-1, 7, -1, 5, -1, -1, -1},{7, -1, 8, 9, 7, -1, -1},{-1, 8, -1, -1, 5, -1, -1},{5, 9, -1, -1, 15, 6, -1},{-1, 7, 5, 15, -1, 8, 9},{-1,-1, -1, 6, 8,-1, 11},{-1,-1, -1, -1, 9,11, -1}};typedef struct {char row;char col;} Line;Line lines[MAX_LINE*MAX_LINE];void prim();char visit[MAX_LINE];//存储访问过的节点char unvisited[MAX_LINE];//存储未被访问过的节点char visitIndex,unvisitedIndex,linesIndex;void init(){//do something initvisitIndex=0;unvisitedIndex=0;linesIndex = 0;char i;//初始化未被访问节点for(i = 0;i<MAX_LINE;i++){visit[i] = i;unvisited[i] = i;}}int main(){init();cout<<"prim算法最小生成树"<<endl;prim();getchar();return 0;}//prim最小生成树void prim(){visit[visitIndex++] = 0;//将0节点放入访问数组unvisited[0] = -1;char i = 0,j,min;char row,col,sum = 0;Line tmpLine;while(visitIndex<MAX_LINE){min = 20;for(i = 0;i<visitIndex;i++){row = visit[i];//选出x//寻找最小yfor(j = 0;j<MAX_LINE;j++){if(unvisited[j] == -1)continue;col = unvisited[j];if(tree[row][col] == -1)continue;if(tree[row][col] < min){min = tree[row][col];tmpLine.row = row;tmpLine.col = col;}}}//找到最小minlines[linesIndex++] = tmpLine;visit[visitIndex++] = tmpLine.col;unvisited[tmpLine.col] = -1;sum+=min;}//打印path和sumfor(i = 0;i<linesIndex;i++)printf("<%d,%d>\n",lines[i].row,lines[i].col);printf("total num is %d\n",sum);}
0 0
- 数据结构(C实现)------- 最小生成树之Prim算法
- c语言:最小生成树之Prim算法
- 最小生成树算法之Prim算法
- 最小生成树算法之Prim算法
- 最小生成树算法之prim算法
- 最小生成树Prim算法C语言
- Prim最小生成树算法(C++)
- 最小生成树之Prim算法
- 最小生成树算法之prim
- 最小生成树之prim算法
- 【算法】最小生成树之prim
- 最小生成树之prim算法
- 最小生成树算法之Prim
- 最小生成树之prim算法
- 最小生成树之prim算法
- 最小生成树之prim算法
- 最小生成树之prim算法
- 最小生成树之prim算法
- jvm工作原理
- 数字金子塔
- SQL语句优化的降龙十八掌(针对的是Oracle数据库)
- java编程最差实践
- Dalvik启动参数
- c++ 最小生成树之prim算法
- spring事务管理
- DP或搜索——POJ 1664
- N+1查询
- 多控制器管理
- RFID:通信系统中为什么 要进行调制和解调?调制的分类方法有哪些?
- TCP/IP,Http,Socket,XMPP的区别
- [UVA10572]Black & White && 插头DP
- Data Structures and Algorithm Analysis in C 学习之List反转