//重写了Brute
package PA3;
import java.util.ArrayList;
import java.util.Arrays;
import edu.princeton.cs.algs4.In;
import edu.princeton.cs.algs4.StdDraw;
public class BruteCollinearPoints {
private int segNum; //number of segments;
private ArrayList<LineSegment> segTemp = new ArrayList<LineSegment>();
// temp, with null segments;
private LineSegment[] result;
public BruteCollinearPoints(Point[] points){
Arrays.sort(points, new Point(0,0).slopeOrder());
int size = points.length;
for (int i = 0; i < size; i++){
for (int j = i+1; j < size; j++){
for (int k = j+1; k < size; k++){
for (int l = k+1; l < size; l++){
if (points[i].slopeTo(points[j])
== points[i].slopeTo(points[k])
&& points[i].slopeTo(points[k])
== points[i].slopeTo(points[l]))
{
points[i].drawTo(points[l]);
segTemp.add(new LineSegment(points[i],points[l]));
segNum++;
}
}
}
}
}
result = new LineSegment[segNum];
for (int i = 0; i < segNum; i++){
result[i] = segTemp.get(i);
}
}
public int numberOfSegments(){
return segNum;
}
public LineSegment[] segments(){
return result;
}
public static void main(String[] args){
StdDraw.setXscale(0,32768);
StdDraw.setYscale(0,32768);
String filename = args[0];
In in = new In(filename);
int N = in.readInt();
Point[] pointArray = new Point[N];
for (int i = 0; i < N; i++){
int x = in.readInt();
int y = in.readInt();
Point p = new Point(x,y);
pointArray[i] = p;
p.draw();
}
BruteCollinearPoints BCP = new BruteCollinearPoints(pointArray);
}
}
Princeton Algorithm Part 1 Week - Brute ii
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Point 和LineSegment没有什么好写的,作业大部分已给出。 倒是很好的练习了java的基础。 Poin...
- 自己做了个双向链表,加上头尾两个node。 可能环状结构(可能叫这个名字?)更适合这道题。我在之后的Randomi...
- 时间给的非常充裕(N^4),而且是穷举的方式 比较简单。 下一个 Fast class 就相对难一些了 Brute...
- 这是 coursera Algorithm Part 1 第一周作业, 得分98/100, 测试6错误,可惜没找到...
- 上课重点记一下: assert = 程序运行到此该Boolean为true方能继续• Statement to...