import java.util.Arrays;
import edu.princeton.cs.algs4.Point2D;
import edu.princeton.cs.algs4.StdDraw;
import edu.princeton.cs.algs4.StdOut;
/**
* 從命令行接受一個整數N。
* 在單位正方形內生成N個隨機點,然后計算兩點之間的最近距離。
* @author lenovo
*
*/
public class ShortDistance {
public static void main(String[] args) {
int N = Integer.parseInt(args[0]);
Point2D[] p = new Point2D[N];
//生成N個點
for(int i = 0; i < N; i++) {
double x = Math.random();
double y = Math.random();
p[i] = new Point2D(x,y);
p[i].draw();
}
Arrays.sort(p);
double minDistance = p[0].distanceTo(p[N-1]);
int minIndex = N;
//比較最小距離
for(int i = 0; i < N-1; i++) {
double min = p[i].distanceTo(p[i+1]);
if(min < minDistance){
minDistance = min;
minIndex = i;
}
}
StdDraw.setPenColor(StdDraw.RED);
//輸出
if(minDistance == N-1){
p[N-1].drawTo(p[0]);
}
else{
p[minIndex].drawTo(p[minIndex+1]);
}
StdOut.print("最小距離為" + minDistance);
}
}
讀書筆記《算法》 習題 1.2.1
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。