Tôi đang làm việc trên một ứng dụng cần khớp hai tập hợp dữ liệu dựa trên các tiêu chí khác nhau, bao gồm tổng số bất kỳ mục nào từ mỗi bộ . Tôi đã chưng cất vấn đề xuống tuyên bố này:Cho hai tập hợp số, tìm tập hợp nhỏ nhất từ mỗi nơi tổng bằng
Cho một tập hợp các mục và giao dịch, tìm tập hợp các mục nhỏ nhất trong đó tổng bằng tổng của tập hợp giao dịch nhỏ nhất. (Có một số phức tạp tôi bỏ qua cho bài đăng này, nhưng hiện tại tôi chỉ quan tâm đến tổng số tiền phù hợp, không phải ngày tháng, mô tả, chênh lệch thanh toán bù trừ, v.v.)
Hoặc, toán học: Cho hai bộ số , tìm tập nhỏ nhất từ mỗi nơi mà các khoản tiền bằng nhau.
Các câu hỏi SO tương tự khác mà tôi đã chạy qua giả sử bạn biết tổng trước hoặc biết số lượng từ mỗi tập hợp mà bạn sắp thực hiện.
Và đây là một thử nghiệm mà (tôi nghĩ) minh họa những gì tôi đang làm.
[TestMethod]
public void StackOverflowTest()
{
var seta = new[]{10, 20, 30, 40, 50};
var setb = new[]{ 45, 45, 100, 200 };
var result = Magic(seta, setb);
Assert.AreEqual(new[]{40,50},result.SetA);
Assert.AreEqual(new[] { 45, 45 }, result.SetB);
}
class MagicResult
{
public int[] SetA { get; set; }
public int[] SetB { get; set; }
}
private MagicResult Magic(int[] seta, int[] setb)
{
throw new NotImplementedException();
}
Tôi đang tìm kiếm một giải pháp thanh lịch mà sẽ làm cho đường chuyền này, nhưng sẽ mất bất kỳ giả hoặc gợi ý mà được tôi ở đó;)
+1 để bao gồm phương pháp thử: D –
bạn sẽ làm gì nếu có nhiều bộ đáp ứng tiêu chí này? Ngoài ra, bạn có muốn các tập hợp nhỏ nhất tính tổng số nhỏ nhất không? –
Lần cuối :) - Là một bộ 1 có thể chấp nhận được không? –