亲爱的高手们,//城市节点数目 #define N 30 //城市坐标 double C[N][2]={ {2,99},
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/04/28 17:00:00
亲爱的高手们,
//城市节点数目
#define N 30
//城市坐标
double C[N][2]={
{2,99},{4,50},{7,64},{13,40},{18,54},{18,40},{22,60},{24,42},{25,62},{25,38},
{37,84},{41,94},{41,26},{44,35},{45,21},{54,67},{54,62},{58,35},{58,69},{62,32},
{64,60},{68,58},{71,44},{71,71},{74,78},{82,7},{83,46},{83,69},{87,76},{91,38}
};
//蚂蚁数量
#define M 30
//矩阵表示两两城市之间的距离
double allDistance[N][N];
int Tour[N][2];//当前路径
//计算两个城市之间的距离
double calculateDistance(int i,int j)
{
return sqrt(pow((C[i][0]-C[j][0]),2.0) + pow((C[i][1]-C[j][1]),2.0));
}
//由矩阵表示两两城市之间的距离
void calculateAllDistance()
{
for(int i = 0; i < N; i++)
{
for(int j = 0; j < N; j++)
{
if (i = j)
{
allDistance[i][j] = calculateDistance(i,j);
allDistance[j][i] = allDistance[i][j];
}
}
}
}
//获得经过n个城市的路径长度
double calculateSumOfDistance(int* tour)
{
double sum = 0;
for(int i = 0; i< N ;i++)
{
int row = *(tour + 2 * i);
int col = *(tour + 2* i + 1);
sum += allDistance[row][col];
}
return sum;
}
其中
int row = *(tour + 2 * i);
int col = *(tour + 2* i + 1);这个里面的row 为什么要给i*2?代表坐标,还是分别代表两个城市?
//城市节点数目
#define N 30
//城市坐标
double C[N][2]={
{2,99},{4,50},{7,64},{13,40},{18,54},{18,40},{22,60},{24,42},{25,62},{25,38},
{37,84},{41,94},{41,26},{44,35},{45,21},{54,67},{54,62},{58,35},{58,69},{62,32},
{64,60},{68,58},{71,44},{71,71},{74,78},{82,7},{83,46},{83,69},{87,76},{91,38}
};
//蚂蚁数量
#define M 30
//矩阵表示两两城市之间的距离
double allDistance[N][N];
int Tour[N][2];//当前路径
//计算两个城市之间的距离
double calculateDistance(int i,int j)
{
return sqrt(pow((C[i][0]-C[j][0]),2.0) + pow((C[i][1]-C[j][1]),2.0));
}
//由矩阵表示两两城市之间的距离
void calculateAllDistance()
{
for(int i = 0; i < N; i++)
{
for(int j = 0; j < N; j++)
{
if (i = j)
{
allDistance[i][j] = calculateDistance(i,j);
allDistance[j][i] = allDistance[i][j];
}
}
}
}
//获得经过n个城市的路径长度
double calculateSumOfDistance(int* tour)
{
double sum = 0;
for(int i = 0; i< N ;i++)
{
int row = *(tour + 2 * i);
int col = *(tour + 2* i + 1);
sum += allDistance[row][col];
}
return sum;
}
其中
int row = *(tour + 2 * i);
int col = *(tour + 2* i + 1);这个里面的row 为什么要给i*2?代表坐标,还是分别代表两个城市?
int* tour; 该指针 是指向int Tour[N][2]; 指针吧?这样的话在Tour 两个元素之间跳转就需要i*2 了.由于是每一行的首地址,所以解引用返回的是 Tour 第一维元素值,就是第几个城市.
allDistance[i][j] 保存的就是第i 个城市 和 第 j 个城市的距离
你最好给出int Tour[N][2] 的初始化
allDistance[i][j] 保存的就是第i 个城市 和 第 j 个城市的距离
你最好给出int Tour[N][2] 的初始化
#define N 3 #define Y(n) ((N=1)*n) 则表达式2*(N+Y(5+1))的值是
C语言 选择题设以下是宏定义:#define N 3#define Y(n) (N+1*n) 则执行语句:z=2*(N*
#define N 3 #define Y(n) ( (N+1)*n) 则执行语句:z=2 * (N+Y(5+1));后
、设有以下宏定义:#define N 3 #define Y(n) ( (N+1)*n) 则执行语句:z=2 * (N+
#define N 5 #define f(M) ((N+1)*M) 求x=2*(N+1)+2*f(N+1); 求x的值
C语言,有关求定积分#define N 100#includedouble *f(double x){\x09doubl
在C语言中为什么执行过 #define N 2 #define M N+1 #define NUM (M+1)*M/2以
若有以下宏定义:#define N 3 #define Y(n) ((N+1)*n) ,执行语句“z=2*(N+Y(5+
#includedouble fun(double q){int n;double s,t;n=2;s=2.0;whil
完全二叉树有2*n-1 的节点,则它的叶子节点数为?
色子数目为N,出现点数6的概率为C.当N=1时,C=1/6.当N=2时,C=11/36.求C与N之间的关系?
有以下定义int a=0; double b=1.25; char c=’A’; #define d 2下语句中错误的是