这是c++prim算法 运行结果有错误 琢磨了n天了,还是没办法 谁能帮我搞定一下 万分感谢

姑gggggggg 2013-05-29 08:36:43
//c++的prim算法
#include <iostream>
using namespace std;
const int max_num=100;

int minedge[max_num][max_num];//括号内是两个点,此数组的值为两个点的权值
typedef struct {
int z;
int N;
int f;
}dian;
dian a[max_num];
class prim{

int w;
public:
prim()
{
n = 0;
for (int i = 0; i < max_num; i++)
{
visited[i] = false;
a[i].f = 0;//已访问的点
a[i].N = 0;//未被访问的点
a[i].z = 0;//权值
}
}

//创建一个带权值的图
void creatgraph(){
int i,j,x;
cout<<"请输入顶点数"<<endl;
cin>>n;
cout<<"请输入这两个顶点是否为邻接点,如果是,输入其权值,否则请输入-1"<<endl;
for(i=1;i<=n;i++){
for(j=i+1;j<=n;j++){
cout<<i<<j<<endl;
cin>>x;
minedge[i][j]=x;
}
}
return;
}
void Prim(){
int i,j;
for(i=1;i<=n;i++)
visited[i]=false;//初始化将所有的点设置成未被访问
get_minedge(1);//从1开始
j=get_minedge(1);//j是距离1权值最小的点
cout<<a[w].z<<" "<<a[w].f<<" "<<a[w].N<<endl;
for(i=1;i<n;i++){
get_minedge(j);//距离j权值最小的
j=get_minedge(j);//j已被访问得点
cout<<a[w].z<<" "<<a[w].f<<" "<<a[w].N<<endl;
}
return;
}
int get_minedge(int v){
int i,min,k;
min=1000;
for(w=1;w<=n;w++){
for(i=1;i<=n;i++){
if(visited[i]==false&&minedge[v][i]<min)
min=minedge[v][i];}
a[w].z=min;
a[w].f=v;
a[w].N=i;}
//从已被访问的点中,选出它们最小的边
for(w=1;w<=n;w++){
if(a[w].z<min){
min=a[w].z;
k=a[w].N;
visited[k]=true;//将v设置成已被访问过的点
}
}
return k;
}
private:
int n;
int visited[max_num];


};


void main(){
prim p;
p.creatgraph();
p.Prim();
return ;
}
...全文
175 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaode01 2013-06-02
  • 打赏
  • 举报
回复
for(i=1;i<=n;i++){//i应该从2开始,你的minedge[1][1]=0 if(visited[i]==false&&minedge[v][i]<min) min=minedge[v][i];}
shaode01 2013-06-02
  • 打赏
  • 举报
回复

你的权都没保存下来,minedge里面全是0
shaode01 2013-06-02
  • 打赏
  • 举报
回复
出了什么错误啊
指针从不野 2013-06-01
  • 打赏
  • 举报
回复
大一的就学算法了啊?你可以说说你这个程序里面的变量定义是干什么的吗?
姑gggggggg 2013-05-30
  • 打赏
  • 举报
回复
我自己想的 书上的没看明白 对不起哦 大一的 有点笨
derekrose 2013-05-29
  • 打赏
  • 举报
回复
http://book.douban.com/subject/1895447/
u010865336 2013-05-29
  • 打赏
  • 举报
回复
这个是什么算法?这几天怎研究算法的呢
姑gggggggg 2013-05-29
  • 打赏
  • 举报
回复
如日日日日日日日日
指针从不野 2013-05-29
  • 打赏
  • 举报
回复
先占个沙发,明晚有时间来看看。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧