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
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...