所以我有一个数组[n m],我需要在C++中编码每行和数组中其他行之间的欧几里得距离,并将其存储在一个新的distance-array [n n]其中每个单元格的值是相交行之间的距离。 距离阵列:每个记录与数组中的其他记录之间的欧几里得距离
r0 r1 .....rn
r0 0
r1 0
. 0
. 0
rn 0
丝束行或丝束记录之间的欧几里得距离: 假设我们有这些丝束记录:
r0: 1 8 7
r1: 2 5 3
r2
.
.
rn
(R0和R1 = SQRT(之间欧几里得距离1- 2)^ 2 +(8-5)^ 2 +(7-3)^ 2) 代码这我使用4循环(我认为是太多了),但我做不对,可有人帮助我在不使用3-D数组的情况下编码? 这是我的代码:
int norarr1[row][column] = { 1,1,1,2,2,2,3,3,3 };
int i = 0; int j = 0; int k = 0; int l = 0;
for (i = 0; i < column; i++){
for(j = 0; j < column; j++){
sumd = 0;
for (k = 0; k < row; k++) {
for (l = 0; l < row; l++) {
dist = sqrt((norarr1[i][k] - norarr1[j][l])^2);
sumd = sumd + dist;
cout << "sumd =" << sumd << " ";
}
cout << endl;
}
disarr[j][i] = sumd;
disarr[i][j] = sumd;
cout << disarr[i][j];
}
cout << endl;
}
我建议创建一个保存每个点/矢量坐标的'Point'或'Vector3D'类。 –
p.s.你的代码不正确。您正在计算平方根的总和,而不是总和的平方根。 –
另外,'^'不会做你认为它做的事。 –