Asked Aug 7th, 8:05 AM 113 0 1
  • 113 0 1
0

Bài toán chia list số tiền thành từng nhóm thỏa mãn điều kiện...

Share
  • 113 0 1

Xin chào mọi người!

Em có một tình huống như thế này đang loay hoay ngâm cứu mà vẫn chưa ra xin các cao nhân chỉ giáo cho em với ạ! Chuyện là vầy:

Em có một list lịch sử giao dịch với số tiền tương ứng.

List<Invoice> items = new List<Invoice>() {
                    new Invoice("808861", -45.85),
                    new Invoice("822634", -144.32),
                    new Invoice("822635", -56.63),
                    new Invoice("835308", 2970.55),
                    new Invoice("835309", 869.36),
                    new Invoice("835310", 3050.73),
                    new Invoice("835311", 657.74),
                    new Invoice("835312", 168.42),
                    new Invoice("835348", 2922.69),
                    new Invoice("835349", 324.5),
                    new Invoice("835350", 906.3),
                    new Invoice("835351", 420.21),
                    new Invoice("835352", 851.7),
                    new Invoice("838880", 158.43),
                    new Invoice("838881", 2062.46),
                    new Invoice("838882", 567.26),
                    new Invoice("838883", 40.96),
                    new Invoice("838884", 207.16),
                    new Invoice("838889", 2726.13),
                    new Invoice("838890", 29.25),
                    new Invoice("838891", 1458.28),
                    new Invoice("838892", 219.58),
                    new Invoice("839930", 2791.99),
                    new Invoice("839931", 455.47),
                    new Invoice("839932", 514.94),
                    new Invoice("839934", 666.78),
                    new Invoice("840758", -341.34),
                    new Invoice("855741", -113.55),
                    new Invoice("855973", -85.46),
                    new Invoice("866848", -39.53),
                    new Invoice("877471", -58.17),
                    new Invoice("877472", -58.17),
                    new Invoice("878790", -459.53),
                    new Invoice("892869", -6353.36)
        };

Em muốn chia các lịch sử giao dịch thành nhiều group nhỏ với điều kiện như sau:

  1. Tối đa cho mỗi group sẽ chứa 26 cái lịch sử giao dịch.
  2. Tổng số tiền trong mỗi group phải lớn hơn 0.
  3. Group cuối cùng chứa những lịch sử còn lại miễn sao vẫn thỏa điều kiện lớn hơn 0.

Dưới dây em viết bừa để tính tổng thử của giao dịch nhưng cái group cuối tổng vẫn nhỏ hơn 0 ạ.

private static void ShowSumOf26Invoice(List<Invoice> list, int from, int to)
        {
            if (list.Count > 26)
            {
                Console.WriteLine("Total amount from: " + from + " to " + to + " : " + items.GetRange(0,26).Sum(x => x.Amount));
                items.RemoveRange(from - 1, 26);
                from = from - 1 + 26;
                to = to + 26;
                ShowSumOf26Invoice(items, from, to);
            }
            else
            {
                Console.WriteLine("Total amount from: " + from + " to " + (to - 26 + items.Count) + " : " + items.Sum(x => x.Amount));
            }
        }

        static void Main(string[] args)
        {

            Console.WriteLine("Total amount: " + items.Sum(x=>x.Amount));
            int from = 1;
            int to = 26;
            ShowSumOf26Invoice(items, from, to);

            Console.WriteLine("Press any key to end the program!");
            Console.ReadKey();
        }

Xin các cao nhân và bạn bè thân hữu gần xa giúp đỡ em ạ! Em xin cám ơn!

1 ANSWERS


Answered Aug 14th, 6:19 AM
Accepted
0
Share
Lê Tuấn Anh @tuananhbfs
Aug 18th, 4:40 AM

bài toán này phục vụ cho vấn đề gì nhỉ?

0
| Reply
Share
Nguyễn Anh Duy @anhduynguyen020595
Aug 18th, 8:01 AM

@tuananhbfs Dạ bài toán này để tạo file thanh toán gửi tới ngân hàng ạ! Nhưng ngân hàng yêu cầu phải gửi file có yêu cầu như đề bài.

0
| Reply
Share