我正在尝试用Java编写一个程序,该程序通过比较找到整个集合中任意一对坐标之间的最大长度。
我想我的问题不在于寻找最大长度,而在于创建所有可能的配对。我真的不明白对于给定方程式中的x和y坐标应该放置什么。我如何从每对中获取坐标并进行比较?我读过重复的解决方案,但是我对编程还不陌生,所以我听不懂。
这是我到目前为止与该问题相关的代码部分:
public static void main (String[] args) {
int[][] countries = {{-34,-7},{76,-23},{-5,-20},{-56,64},{12,56}};
double maxDistance = 0;
for(int i = 0; i < countries.length-1; ++i) {
for(int j = i; j < countries.length; ++j) {
double distance = Math.sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
我将不胜感激,甚至向正确的方向前进。
我对如何定义x / y变量感到困惑,因为我只是从countrys数组中提取坐标,所以我认为它们已经定义了?我当时想有一种方法可以比较索引或方程式中的某些内容。
非常感谢您!
答案 0 :(得分:2)
在i之后开始j,因为您已经将先前的索引与数组的其余部分进行了比较。而且,您是否定义了x1,x2,y1,y2变量?
这应该有所帮助:
int[][] countries = {{-34,-7},{76,-23},{-5,-20},{-56,64},{12,56}};
double maxDistance = 0;
for(int i = 0; i < countries.length-1; ++i) {
for(int j = i+1; j < countries.length; ++j) { //do not create zero distance or duplicate pairings
//get your x1, x2, y1, y2 from countries[i] and countries[j]
double distance = Math.sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
//compare with maxDistance
//assign maxDistance if you find it greater than previous one and record the coordinates which produced this distance
}
}
如果不清楚或我错过了什么,请发表评论;)
答案 1 :(得分:2)
我在您的代码上做了些改动
int[][] countries = { { -34, -7 }, { 76, -23 }, { -5, -20 }, { -56, 64 }, { 12, 56 } };
double maxDistance = 0;
for (int i = 0; i < countries.length - 1; ++i) {
int x1 = countries[i][0];
int y1 = countries[i][1];
for (int j = i; j < countries.length; ++j) { // first j will be i
int x2 = countries[j][0];
int y2 = countries[j][1];
double distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
maxDistance = maxDistance < distance ? distance : maxDistance;
}
}
System.out.println(maxDistance);
输出
158.09174551506476
注意如何循环i
和j
,以及如何定义x1, x2, y1, y2