Đó là một buổi tối mùa hè ấm áp ...
khi chiếc xe ngu ngốc của tôi quyết định bị hỏng giữa đường trên đường trở về từ siêu thị. Tôi đẩy nó sang bên lề và quyết định đi bộ về nhà. Tôi mở cốp để lấy hàng tạp hóa và những thứ còn lại. Đó là lúc tôi nhận thấy các mặt hàng không được đóng gói đều. Một số túi có nhiều vật nặng hơn trong khi một số khác có vài thứ nhẹ hơn - một số thậm chí còn có sự pha trộn của các vật phẩm đó. Để giúp tôi dễ dàng mang theo, tôi quyết định nhóm tất cả mọi thứ vào hai túi và làm cho trọng lượng của chúng càng gần nhau càng tốt.
Mục tiêu của bạn
là để giúp tôi sắp xếp lại các mặt hàng vào hai túi mua sắm theo cách sao cho sự khác biệt giữa cả hai túi gần bằng 0 nhất có thể.
Về mặt toán học:
TRỌNG LƯỢNG TAY TRÁI TAY - TAY TRỌNG LƯỢNG TAY 0
Thí dụ
Nếu tôi chỉ có 2 món, Bánh mì và Bơ đậu phộng, và trọng lượng của bánh mì là 250 gram và bơ đậu phộng là 150 gram, cách tốt nhất là mang chúng riêng biệt bằng hai tay.
W LH - W RH = W (BREAD) - W (P.BUTTER)
250 - 150 = 100
Khả năng khác là:
W (BREAD, P.BUTTER) - W (tay không) = (250 + 150) - 0 = 400
Điều này không tốt hơn trường hợp đầu tiên của chúng tôi, vì vậy bạn nên đi với trường hợp đầu tiên.
Mã của bạn nên
- lấy đầu vào của các con số biểu thị trọng lượng của các mặt hàng trong túi mua sắm. Các đơn vị không quan trọng, nhưng chúng phải giống nhau (lý tưởng là kilôgam hoặc gam). Đầu vào có thể được thực hiện từng cái một hoặc tất cả cùng một lúc. Bạn có thể giới hạn tổng số tối đa là 20 mục, nếu bạn muốn.
- Định dạng / loại đầu vào tùy thuộc vào bạn để chọn, nhưng không có gì khác phải có mặt ngoài trọng lượng.
- Bất kỳ ngôn ngữ đều được cho phép, nhưng dính vào các thư viện tiêu chuẩn.
- Hiển thị đầu ra. Một lần nữa, bạn thoải mái chọn định dạng, nhưng giải thích định dạng trong bài đăng của bạn. tức là, làm thế nào chúng ta có thể biết cái nào là vật phẩm tay trái và cái nào là vật phẩm tay phải.
Điểm
- Mã ngắn nhất sẽ thắng.
Dấu
Hai thuật toán có thể mà tôi có thể nghĩ đến là sự khác biệt (nhanh hơn) và hoán vị / kết hợp (chậm hơn). Bạn có thể sử dụng những thuật toán này hoặc bất kỳ thuật toán nào khác thực hiện công việc.