2024年12月C语言四级答案及解析.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

一、简答题

1、1.兔子不吃窝边草

有谚语云:“兔子不吃窝边草”。现给定若干块排列成一条线的草皮,假设兔子从任

何一块草皮开始吃,但吃完一块后,绝对不吃直接相邻的草皮,则兔子最多可以吃

掉多少草?

时间限制:10000

内存限制:65536

输入

输入第一行给出两个正整数,即N(≤105)为草皮的块数、i(1≤i≤N)

为兔子开始吃的第一块草皮的编号。第二行给出N个正整数(≤

103),以空格分隔,依次表示每块草皮的含草量。

输出

首先在一行中输出这只兔子最多可以吃掉的草量。下一行按兔子吃草的顺序输出每

块被吃掉的草皮的编号。同行数字以1个空格分隔,行首尾不得有多余空格。

注意:我们必须假设兔子只朝一个方向跳着吃草,否则如果它可以来回跳,就能吃

掉所有的草了。如果朝左右两个方向得到的结果一样,则兔子总是喜欢向左边跳;

并且如果有多块草皮都可以得到同样的结果,兔子总是选择跳到离自己最近的那块

样例输入

样例1:

104

2143115231

样例2:

108

2143115231

样例输出

样例1:

11

479

样例2:

9

8631

解析:

这道题目是一个典型的动态规划问题。动态规划是一种求解最优化问题的方法,其

基本思想是将问题分解为若干个子问题,通过求解子问题的最优解,逐步构造出原

问题的最优解。在这道题目中,我们可以将问题分解为求解以每块草皮为结尾的最

长不连续草皮序列的长度,然后通过比较和选择得到最优解。

具体的实现过程中,我们需要使用动态规划的思想,通过状态转移方程来计算dp值

,并在遍历过程中记录最大dp值和对应的草皮编号。由于题目中限制了内存和时

间的限制,我们需要使用高效的算法来求解。动态规划是一种非常有效的求解最优

化问题的方法,能够在较短的时间内得到最优解。

2、2.漂亮的序列

对于给定的整数m,我们称一个序列是“漂亮”的,如果它包含至少2

个整数,并且有2个相邻数字的差不超过m。你的任务是计算一个给定n

个正整数的序列中,有多少个子序列是漂亮的。

时间限制:6000

内存限制:65536

输入

输入第一行给出2个正整数n和m(2≤n≤105,1≤m≤103),随后一行给出序列中

n个不超过105的正整数。同行数字间以空格分隔。

输出

输出原始序列中漂亮子序列的个数。因为答案可能非常大,所以你需要输出对

1000000007(109+7)取模后的结果。

样例输入

42

5386

样例输出

8

提示

样例解释:

1、子序列下标为{1,2},对应值为{5,3};

2、子序列下标为{1,4},对应值为{5,6};

3、子序列下标为{3,4},对应值为{8,6};

4、子序列下标为{1,2,3},对应值为{5,3,8};

5、子序列下标为{1,2,4},对应值为{5,3,6};

6、子序列下标为{1,3,4},对应值为{5,8,6};

7、子序列下标为{2,3,4},对应值为{3,8,6};

8、子序列下标为{1,2,3,4},对应值为{5,3,8,6}。

解析:

这个问题可以通过动态规划来解决。我们可以定义一个状态数组dp,其中dp[i]表示

以第i个数结尾的漂亮子序列的数量。对于序列中的每个数,我们需要考虑两种情

况:单独作为子序列,或者作为已有漂亮子序列的延续。对于第二种情况,我们需

要查找在前面的数中,哪些数与我们当前处理的数构成的差不超过m的子序列。由

于数字可能非常大,我们需要对状态进行压缩。具体来说,我们可以使用状态压缩

的动态规划,只保留当前需要的状态信息,从而节省内存。在实现时,我们可以使

用二分查找来快速找到满足条件的状态。最后,将所有状态的数量相加即可得到答

案。由于答案可能非常大,我们需要对结果取模。因此,最终的答案是所有状态数

量的总和取模后的结果。

3、3.园林修整

园林修整中,常利用树木来形成整齐的区域分割线。园丁要将树木按高度修剪成递

增或递减的形状——

如果一棵树太高了,就需要裁剪;如果太矮了,则需要替换。修整所花费的力气与

裁剪或替换树木的数量成正比,所以需要你替他想一种最省力的修整方案。

时间限制:1000

文档评论(0)

喵呜刷题 + 关注
实名认证
文档贡献者

来喵呜刷题,完成你的职业蜕变!

1亿VIP精品文档

相关文档