بکندباز

برای لیست ورودی، لیست فرعی با بزرگترین مجموع ممکن بین آیتم های متوالی را به دست آورید. سپس این بزرگترین مجموع و همچنین ایندکس اولیه و نهایی لیست فرعی را در خروجی برگردانید.

مثال

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}));

هنوز پاسخی برای این تمرین ثبت نشده است

نظرات

*
*