برای لیست ورودی، لیست فرعی با بزرگترین مجموع ممکن بین آیتم های متوالی را به دست آورید. سپس این بزرگترین مجموع و همچنین ایندکس اولیه و نهایی لیست فرعی را در خروجی برگردانید.
مثال
big_sub([4, -3, 5, -7, 5]) ➞ [6 (sum), 0 (start), 2 (end)]
در این مثال لیست فرعی که بزرگترین مجموع را دارد برابر است با [4, -3, 5].
جمع اعضا = 6 و ایندکس شروع لیست فرعی برابر با 0 و ایندکس پایان برابر با 2 است.
نمونه ورودی و خروجی
BigSub([4, -3, 5, -7, 5]) ➞ [6, 0, 2]
BigSub([4, -3, -5, 7, 5]) ➞ [12, 3, 4]
BigSub([2, -3, 2, -3, 2]) ➞ [2, 4, 4]
نکات
- اگر بزرگترین جمع در چند بازه تکرار شود، موقعیت های شروع و پایان آخرین بازه را برگردانید.
- لیست همیشه دارای اعداد مثبت خواهد بود.
EXPECT_EQ(BigSub({4, -3, 5, -7, 5}), std::vector({6, 0, 2})); EXPECT_EQ(BigSub({4, -3, -5, 7, 5}), std::vector ({12, 3, 4})); EXPECT_EQ(BigSub({2, -3, 2, -3, 2}), std::vector ({2, 4, 4})); EXPECT_EQ(BigSub({4, 5, 6, -12, 4, 6, 8, -2, 4, -3, 2, 6, 5, 3, 3, -4, 3, -65, 34}), std::vector ({39, 0, 14}));
نظرات