import edu.princeton.cs.algs4.StdOut;
public class E1_4_26 {
public static void main(String[]args){
double[][]a={{0,0},{1.0,1},{2.0,2},{3,2},{4,4}};
StdOut.println(threeCollinearityTriples(a));//4组
//测试threesum
double[][]b={{-5,Math.pow(-5,3)},{2,Math.pow(2,3)},{3,Math.pow(3,3)}};
StdOut.println(threeCollinearityTriples(b)==1);//true
}
public static int threeCollinearityTriples(double[][]a){
//假设a是N行2列的,代表坐标
int cnt=0;
for (int i=0;i<a.length;i++)
for (int j=i+1;j<a.length;j++)
for (int k=j+1;k<a.length;k++)
if (calSlope(a[i],a[j])==calSlope(a[j],a[k]))
cnt++;
return cnt;
}
public static double calSlope(double[] A,double[] B){
//计算A,B两点的斜率
return (B[1]-A[1])/(B[0]-A[0]);
}
}