关于floyd算法的一个问题
我写了一floyd算法的实现计算一个29个顶点的图
程序如下
由于时间紧 所以写的比较乱 但是还是能够实现的
程序的第一部分如下(由于csdn说我的帖子太长,第2部分见我自己回复的第一个帖子)
#include<iostream.h>
#include<cstdio>
#include<conio.h>
class GraphAdjMatrix
{
private:
int vexNO,**path;
double **shortest, **arcweights;
int FloydResult();
int Input();
int input();
public:
int Floyd();
GraphAdjMatrix();
~GraphAdjMatrix();
int Creat();
};
/*int GraphAdjMatrix::Input()
{
//FIRE *fp;
//fp=fopen("e:\\ljjz.txt","r+");
cout<<"\nHow many Vertex:";
cin>>vexNO;
arcweights=new int *[vexNO];
if(arcweights==NULL) return 0;
for(int k=0;k<vexNO;k++)
{
arcweights[k]=new int[vexNO];
if(arcweights[k]==NULL) return 0;
}
for(int i=0;i<vexNO;i++)
{
for(int j=0;j<vexNO;j++)
{
cout<<"\narcweights["<<i<<"]["<<j<<"]";
cin>>arcweights[i][j];
}
}
for( i=0;i<vexNO;i++)
{
for(int j=0;j<vexNO;j++)
{
cout<<" "<<arcweights[i][j];
}
cout<<"\n";
}
//fclose(fp);
return 1;
} */
int GraphAdjMatrix::input()
{
vexNO=29;
arcweights=new double *[vexNO];
if(arcweights==NULL) return 0;
for(int k=0;k<vexNO;k++)
{
arcweights[k]=new double[vexNO];
if(arcweights[k]==NULL) return 0;
}
/*double arcweight[][4]=
{
0,2,3,32767,
2,0,7,32767,
3,7,0,12,
32767,32767,12,0
};*/
double arcweight[][29]=
{
0,83,32767,32767,32767,1784.6,32767,32767,32767,83,32767,32767,431.82,32767,32767,1132.9,32767,1083.1,32767,514.1,869.27,610.03,768.97,323.97,1076.2,32767,1423.2,1016.9,2048.8,
83,0,83,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,83,0,83,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,83,0,83,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,83,0,83,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
1784.6,32767,32767,32767,83,0,83,32767,32767,32767,32767,32767,1529.1,32767,32767,772.52,32767,1573.6,32767,1346.1,1359.2,2269.8,1258.9,1983.7,939.45,880.24,593.66,121.66,389.08,
32767,32767,32767,32767,32767,83,0,83,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,83,0,83,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,83,0,83,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
83,32767,32767,32767,32767,32767,32767,32767,83,0,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,0,83,32767,32767,32767,83,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,83,0,83,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
431.82,32767,32767,32767,32767,1529.1,32767,32767,32767,32767,32767,83,0,83,32767,877.33,32767, 827.58,32767,258.52,613.69,916.95,513.39,630.89,820.58,761.37,1167.6,1525.8,1793.2,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,83,0,83,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,83,0,83,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
32767,32767,32767,32767,32767,772.52,32767,32767,32767,32767,83,32767,877.33,32767,83.0,32767,921.27,32767,694.41,708.1,1619.3,607.8,1332,287.71,228.5,634.76,769.28,1036.7,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,0,83,32767,83,32767,32767,32767,32767,32767,32767,32767,32767,32767,
1083.1,32767,32767,32767,32767,1573.6,32767,32767,32767,32767,32767,32767,827.58,32767,32767,921.27,83,0,83,644.56,231.79,773.01,314.09,1021.3,864.52,805.3,1211.6,1570.4,1837.8,
32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,83,0,83,32767,32767,32767,32767,32767,32767,32767,32767,32767,
514.1,32767,32767,32767,32767,1346.1,32767,32767,32767,32767,32767,32767,258.52,32767,32767,694.41,83,644.5683,0,430.77,999.23,330.47,713.17,637.66,578.45,984.71,1342.9,1610.3,
869.27,32767,32767,32767,32767,1359.2,32767,32767,32767,32767,32767,32767,613.69,32767,32767,708.1,32767,231.79,32767,430.77,0,32767,32767,32767,32767,32767,32767,32767,32767,
610.03,32767,32767,32767,32767,2269.8,32767,32767,32767,32767,32767,32767,916.95,32767,32767,1619.3,32767,773.01,32767,999.23,32767,0,32767,32767,32767,32767,32767,32767,32767,
768.97,32767,32767,32767,32767,1258.9,32767,32767,32767,32767,32767,32767,513.39,32767,32767,607.8,32767,314.09,32767,330.47,32767,32767,0,32767,32767,32767,32767,32767,32767,
323.97,32767,32767,32767,32767,1983.7,32767,32767,32767,32767,32767,32767,630.89,32767,32767,1332,32767,1021.3,32767,713.17,32767,32767,32767,0,32767,32767,32767,32767,32767,
1076.2,32767,32767,32767,32767,939.45,32767,32767,32767,32767,32767,32767,820.58,32767,32767,287.71,32767,864.52,32767,637.66,32767,32767,32767,32767,0,32767,32767,32767,32767,
32767,32767,32767,32767,32767,880.24,32767,32767,32767,32767,32767,32767,761.37,32767,32767,228.5,32767,805.3,32767,578.45,32767,32767,32767,32767,32767,0,32767,32767,32767,
1423.2,32767,32767,32767,32767,593.66,32767,32767,32767,32767,32767,32767,1167.6,32767,32767,634.76,32767,1211.6,32767,984.71,32767,32767,32767,32767,32767,32767,0,32767,32767,
1016.9,32767,32767,32767,32767,121.66,32767,32767,32767,32767,32767,32767,1525.8,32767,32767,769.28,32767,1570.4,32767,1342.9,32767,32767,32767,32767,32767,32767,32767,0,32767,
2048.8,32767,32767,32767,32767,389.08,32767,32767,32767,32767,32767,32767,1793.2,32767,32767,1036.7,32767,1837.8,32767,1610.3,32767,32767,32767,32767,32767,32767,32767,32767,0
};
for(int i=0;i<vexNO;i++)
for(int j=0;j<vexNO;j++)
arcweights[i][j]=arcweight[i][j];
return 1;
}
如果将
/*double arcweight[][4]=
{
0,2,3,32767,
2,0,7,32767,
3,7,0,12,
32767,32767,12,0
};*/
的/* */去掉
并且将下面的double arcweight[][29]
的附值注释掉 再将 上面的 vexNO=29;改成vexNO=4;
就没问题
可是一改回来就是死循环
请教大家 我错在哪里 了