我创建了一个程序来产生许多点(数字由用户给出)。
因此该程序产生N点
在图片中查看示例,在这种情况下它有3个点
我需要的是获得这些村庄之间的所有可能距离(例如它的距离:AB,AC,BC)。
这些点存储在一个数组中(分数为x坐标和y坐标)
List<Villages>
我知道我新的毕达哥拉斯定理,我只是无法正确地获得foreach循环。
答案 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]))