并发数和线程数的区别jmeter
为了不坑害求知的少年,我决定不给你写代码。去网上搜下关键字“任意节点最短路径”,你会发现有无数的源码。这些代码基本上都源于两个算法:floyd算法,Dijkstra算法。
使用floyd算法求最简单,代码大概8行左右,很简单吧,呵呵,核心就是3个for循环而已。#include
#define MAX_PATH_LENGTH 1000000
#define MAX_VECTOR_SIZE 108
int main()
{
int path[MAX_VECTOR_SIZE][MAX_VECTOR_SIZE];
int preNode = 0;
int nextNode = 0;
FILE *pfile = NULL;
int i = 0;
int j = 0;
int k = 0;
//初始化
for(i=0;i
{
for(j=0;j
{
path[i][j]=MAX_PATH_LENGTH;
}
}
for(i = 0; i
{
path[i][i]=0;
}
//从文件中读入数据
pfile = fopen("test.txt","r");
if(pfile == NULL)
{
printf("ERROR!\n");
return 0;
}
while(fscanf(pfile,"%d%d",&preNode,&nextNode)!=EOF)
{
path[preNode-1][nextNode-1] = 1;
path[nextNode-1][preNode-1] = 1;
}
//使用floyd算法计算任意两点之间的距离
for(i=0;i
{
for(j=0;j
{
for(k=0;k
{
if(path[i][k]!=MAX_PATH_LENGTH && path[k][j]!=MAX_PATH_LENGTH)
{
if(path[i][j]>path[i][k]+path[k][j])
{
path[i][j] = path[i][k]+path[k][j];
}
}
}
}
}
//打印结果
for(i=0;i
{
for(j=0;j
{
printf("%d ",path[i][j]);
}
printf("\n");
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考