Tôi đã sau ADT (không sắp xếp): List<Segment>
Thuật toán: Merge phân đoạn chồng chéo
//direction is from 0 to 2pi
class Segment {
int start;
int end;
}
Họ đại diện cho ví dụ tình trạng này:
Làm thế nào để làm cho giai đoạn sáp nhập (mũi tên màu xanh lá cây trong ví dụ)? Rõ ràng tôi cần phải lặp qua danh sách và mỗi phân đoạn so sánh với tất cả các phân đoạn khác và cho mỗi cặp vợ chồng nếu có thể thực hiện hợp nhất đơn giản (điều này thật dễ dàng). Nhưng sau đó trong lần lặp thứ hai, tôi cần bằng cách nào đó để trở về đầu danh sách và bắt đầu lại vv ... Vì vậy, tôi đấu tranh để tìm cách thuật toán này sẽ hội tụ như thế nào.
CHỈNH SỬA: Các đoạn có thể là hình tròn - Từ 1.75pi đến 0.5pi, v.v ...
Danh sách của bạn được đặt hàng hoặc ngẫu nhiên? – Tim
danh sách là ngẫu nhiên – michael
Thông tư có tròn không? Nghĩa là, bạn có thể có phân đoạn bắt đầu từ 1,5pi, sau đó chuyển từ 2pi xuống 0,5pi? – Petr