Tôi gặp vấn đề khá độc đáo nên tôi đang gặp sự cố khi giải quyết. Tôi có một bảng 2 x 3, sắp xếp như hình dưới đây.Bảng phức tạp kết hợp thuật toán javascript & jquery
_ __ _ _ __
1- | _ __ _ | __ _ _ |
2- | _ __ _ | __ _ _ |
3- | _ __ _ | __ _ _ |
Dữ liệu được điền vào các ô của bảng. Đôi khi, dữ liệu trong một cột hoặc hàng có thể giống nhau. Ví dụ, nếu (1,1) và (1,2) có cùng dữ liệu. Trong một số trường hợp (1,1), (1,2) và (1,3) tất cả đều có cùng dữ liệu. Nếu các giá trị trong các ô giống nhau và liền kề, chúng cần được hợp nhất. Ví dụ: nếu (1,1) và (1,2) cả hai đều có giá trị là "100" thì hai ô sẽ được hợp nhất. Tôi đã làm điều này bằng tay bằng cách sử dụng jquery như:
(1,2).hide();
(1,1).attr("rowspan", "2");
tôi ẩn (1,2) tế bào thay vì xóa, kể từ khi bảng có thể được thiết lập lại đến 2x3 ban đầu và sau đó repopulated nếu cần thiết. Theo cách thủ công, công trình này tuyệt vời, nhưng tôi cần một phương pháp năng động. Dưới đây là mục tiêu tổng thể của những gì cần phải được hoàn thành.
- Nếu hai ô liền kề theo chiều dọc hoặc ba ô liền kề theo chiều dọc trong cột tương ứng có giá trị bằng nhau thì các ô đó được hợp nhất với nhau.
- Các ô hàng, như (1,1) và (2,1) có thể có dữ liệu trùng lặp và không bao giờ được hợp nhất.
- Để tham khảo, các nhóm ô tương thích được hợp nhất là {(1,1), (1,2)}, {(1,1), (1,2), (1,3)} , {(1,2), (1,3)}, {(2,1), (2,2)}, {(2,1), (2,2), (2,3)}, { (2,2), (2,3)}
- Nhiều lần hợp nhất có thể xảy ra cùng một lúc. Ví dụ: {(1,1), (1,2)} có cùng dữ liệu và {(2,1), (2,2), (2,3)} có cùng dữ liệu. Cả hai nhóm được hợp nhất riêng lẻ.
Câu hỏi chính của tôi là, làm cách nào để viết một thuật toán để thực hiện việc này, mà không cần phải viết ra mọi tình huống có thể xảy ra. Ai đó có thể cho tôi xem một ví dụ về thứ gì đó có thể hoạt động không? Tôi nhận ra điều này phức tạp, vì vậy hãy đặt câu hỏi để làm rõ. Cảm ơn rất nhiều về nâng cao. Đây là một trợ giúp rất lớn!
Bảng có luôn luôn 2x3 không? –
Âm thanh như một công việc cho .... Karnaugh Mapping. Xem http://en.wikipedia.org/wiki/Karnaugh_map –
Bảng luôn luôn ban đầu 2 x 3. Việc hợp nhất các ô có thể làm cho bảng trở thành 2 x 2 hoặc 2 x 1. – dremme