为什么老是有内存错误,感觉没问题啊
程序代码:#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 3276
int main(void)
{
int count,i,j,k,n1,n2,weight,n,e,mindist;
int vex[n],edge[n][n];
int dist[n],prev[n],s[n];
clock_t start,end;
for(count=0;count<10;count++)
{
printf("请输入顶点数和边数,中间用空格隔开:");
scanf("%d%d",&n,&e);
//邻接矩阵的初始化:
for(i=0;i<n;i++)
{
vex[i]=i;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
edge[i][j]=MAX; //显示这行造成内存错误
}
srand((unsigned)time(NULL));
for(k=0;k<e;k++)
{
n1=rand()%n;
n2=rand()%n;
weight=rand()%100+1;
edge[n1][n2]=weight;
} //完成初始化
start=clock();
//开始Dijkstra算法
for(i=0;i<n;i++)
{
dist[i]=edge[0][i];
s[i]=0;
if(dist[i]==MAX)
prev[i]=-1;
else
prev[i]=0;
}
s[0]=1;
dist[0]=0;
for(i=0;i<n;i++)
{
mindist=MAX;
for(j=0;j<n;j++)
{
if(s[j]==0&&dist[j]<mindist)
{
mindist=dist[j];
k=j;
}
}
s[k]=1;
for(j=0;j<n;j++)
{
if(s[j]==0&&dist[j]>dist[k]+edge[k][j])
{
dist[j]=dist[k]+edge[k][j];
prev[j]=k;
}
}
}
//输出起始点到各个点的最短距离:
for(i=0;i<n;i++)
{
printf("起始点到点%d的最短距离为%d\n",i,dist[i]);
} //Dijkstra算法完成。
end=clock();
printf("当顶点数为%d时,所用的时间为%d毫秒。\n",n,end-start);
}
}









