Tôi phải đối mặt với câu hỏi puzzle
[related to data structure
] này trong một cuộc cạnh tranh mã hóa.Một câu đố về cấu trúc dữ liệu
Có một hành tinh của cây (cây thực không phải cấu trúc dữ liệu cây !!). Nó có hàng tỉ hay thậm chí hàng tỉ tỷ cây. Nhà vua ra lệnh tìm trung vị của các lứa tuổi (tính theo năm và số nguyên) của tất cả các cây bằng cách sử dụng carbon hẹn hò. (Method does not matter.
) Lưu ý: Trung bình là "số giữa" trong danh sách số được sắp xếp.
ràng buộc:
1.
Cây lâu đời nhất được biết đến là 2000 năm tuổi.
2.
Chúng có một máy duy nhất có thể lưu trữ các số nguyên trong phạm vi từ-vô cực đến + vô cùng.
3.
Nhưng số lượng các số nguyên như vậy có thể được lưu trữ trong bộ nhớ tại một thời điểm là 1 triệu.
vì vậy, khi bạn lưu trữ 1 triệu số nguyên để lưu trữ số nguyên tiếp theo, bạn phải xóa một số đã lưu trữ.
Vì vậy, bằng cách nào đó họ phải theo dõi trung bình khi họ tiếp tục đếm tuổi cây.
Làm cách nào để thực hiện việc này?
cách tiếp cận của tôi
Sử dụng một biến thể của loại bên ngoài để sắp xếp các lứa tuổi trong khối & viết chúng trong tập tin.
Áp dụng hợp nhất k-cách [cho các đoạn].
Vấn đề với cách tiếp cận trên là cần quét hai tệp.
tôi có thể nghĩ đến cách tiếp cận khác trong đó sử dụng các thông tin The oldest tree is known to be 2000 years old.
chúng ta không thể mất một count array
[as range of ages of tree is fixed
]?
Tôi muốn biết có cách tiếp cận nào tốt hơn không?
Liệu có tồn tại bất kỳ phương pháp mà chúng ta không cần để lưu trữ các dữ liệu trong file? [where only main memory is sufficient?
]
Không chắc chắn nếu điều này sẽ giúp: [Huffman Coding] (http://en.wikipedia.org/wiki/Huffman_coding) – lllluuukke
Có gian lận để lưu trữ độ tuổi của tất cả các cây trong một vị trí bộ nhớ bằng cách sử dụng mã hóa Gödel không? – Ishtar
Không, bất kỳ ý tưởng nào tốt hơn đều được đánh giá cao. –