兔子不吃窝边草 有谚语云:“兔子不吃窝边草”。现给定若干块排列成一条线的草皮,假设兔子从任何一块草皮开始吃,但吃完一块后,绝对不吃直接相邻的草皮,则兔子最多可以吃掉多少草? 时间限制:10000 内存限制:65536 输入 输入第一行给出两个正整数,即 N (≤ 105) 为草皮的块数、 i (1 ≤ i ≤ N) 为兔子开始吃的第一块草皮的编号。第二行给出 N 个正整数 (≤ 103),以空格分隔,依次表示每块草皮的含草量。 输出 首先在一行中输出这只兔子最多可以吃掉的草量。下一行按兔子吃草的顺序输出每块被吃掉的草皮的编号。同行数字以 1 个空格分隔,行首尾不得有多余空格。 注意:我们必须假设兔子只朝一个方向跳着吃草,否则如果它可以来回跳,就能吃掉所有的草了。如果朝左右两个方向得到的结果一样,则兔子总是喜欢向左边跳;并且如果有多块草皮都可以得到同样的结果,兔子总是选择跳到离自己最近的那块。 样例输入 样例1: 10 4 2 1 4 3 1 1 5 2 3 1 样例2: 10 8 2 1 4 3 1 1 5 2 3 1 样例输出 样例1: 11 4 7 9 样例2: 9 8 6 3 1
正确答案:参考程序(Python):兔子不吃窝边草。从i开始只朝一个方向跳,不相邻。求最大吃草量及顺序。左右方向取大,相等取左。样例10,4→11(4 7 9)。核心:单向不相邻取草。
试卷来源:202412 青少年等级考试C/C++真题四级