获得点之间的所有可能距离

时间:2014-04-23 23:15:30

标签: c# math combinations pseudocode

我创建了一个程序来产生许多点(数字由用户给出)。

因此该程序产生N点
在图片中查看示例,在这种情况下它有3个点

我需要的是获得这些村庄之间的所有可能距离(例如它的距离:AB,AC,BC)。

这些点存储在一个数组中(分数为x坐标和y坐标)

List<Villages>

我知道我新的毕达哥拉斯定理,我只是无法正确地获得foreach循环。

3 个答案:

答案 0 :(得分:2)

我认为你会想要一个常规的嵌套 for-loop 而不是foreach。

这样的事情应该有效:

for (int i = 0; i < villageList.Count; ++i)
{
    for (int j = i + 1; j < villageList.Count; ++j)
    {
        distanceFunc(villageList[i], villagelist[j]);
    }
}

其中 distanceFunc 是您要使用的距离函数的任何实现, villageList 是您的List个村庄。

你要使用for循环的原因是因为你需要内循环来启动一个元素超过外循环(i + 1),并且foreach循环不允许你轻松访问你的索引&#39 ;目前处于(它们允许您访问元素本身,但不容易看到它在数组中的位置)。

答案 1 :(得分:1)

您需要两个for循环:

var villages = new List<Villages>() { ... };
for (int i = 0; i < villages.Count - 1; i++)
    for (int j = i + 1; j < villages.Count; j++)
        Console.WriteLine(getDistance(villages[i], villages[j]));

getDistance你应该写自己的地方。它应该返回两个指定的Village之间的距离。

答案 2 :(得分:0)

这个伪代码怎么样:

villages = [a, b, c, ...]
for i=0 to len(villages)-2:
    for j=i+1 to len(villages)-1:
        print(villages[i], villages[j], dist(villages[i], villages[j]))