给你n个坐标,求其中三个坐标能表示一个等腰三角形有多少种java代码怎么写
时间: 2023-05-24 12:05:29 浏览: 87
以下是使用Java语言实现该功能的示例代码:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[][] points = new int[n][2];
for (int i = 0; i < n; i++) {
points[i][0] = scanner.nextInt();
points[i][1] = scanner.nextInt();
}
int count = 0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
for (int k = j + 1; k < n; k++) {
if (isIsosceles(points[i], points[j], points[k])) {
count++;
}
}
}
}
System.out.println(count);
}
private static boolean isIsosceles(int[] p1, int[] p2, int[] p3) {
double d1 = distance(p1, p2);
double d2 = distance(p2, p3);
double d3 = distance(p3, p1);
return d1 == d2 || d2 == d3 || d3 == d1;
}
private static double distance(int[] p1, int[] p2) {
int dx = p1[0] - p2[0];
int dy = p1[1] - p2[1];
return Math.sqrt(dx * dx + dy * dy);
}
}
```
该程序首先读入坐标数量n,然后读入n个坐标。接着,它使用三层循环依次枚举所有的三元组坐标,并检查它们是否能组成一个等腰三角形。如果是,则计数器count加1。最后输出count的值。
具体地,isIsosceles方法接受三个点的坐标作为参数,并返回一个布尔值表示它们是否能组成一个等腰三角形。该方法使用distance方法计算三个顶点之间的距离,并使用等式d1 == d2 || d2 == d3 || d3 == d1检查是否有两个距离相等。如果有,则表示三角形是等腰的,方法返回true;否则返回false。
distance方法接受两个点的坐标作为参数,并返回它们之间的欧几里得距离。
阅读全文