2024年03月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、最长上升子序列(2024.3四级)

一个数的序列b,当bb…

i12

b的时候,我们称这个序列是上升的。对于给定的一个序列(a,a,…,

S12

a),我们可以得到一些上升的子序列(a,a,…,a),这里1=ii…i=

Ni1i2iK12K

N。比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,

8)等等。这些子序列中最长的长度是4,比如子序列(1,3,5,8).

你的任务,就是对于给定的序列,求出最长上升子序列的长度。

时间限制:11000

内存限制:65536

输入

输入的第一行是序列的长度N(1=N=

1000)。第二行给出序列中的N个整数,这些整数的取值范围都在0到10000。

输出

最长上升子序列的长度。

样例输入

7

1735948

样例输出

4

参考答案:对于给定的序列,最长上升子序列的长度为4。

解析:【喵呜刷题小喵解析】:

这个问题是一个经典的动态规划问题,可以通过动态规划算法来解决。

首先,我们需要定义一个数组dp,其中dp[i]表示以第i个数结尾的最长上升子序列

的长度。初始时,所有的dp值都为1,因为每个数本身都可以构成一个长度为1的上

升子序列。

然后,我们遍历序列中的每个数,对于每个数a[i],我们再遍历它之前的所有数a[j]

,其中j的取值范围是1到i-1。如果a[j]

a[i],说明我们可以将a[i]加入到以a[j]结尾的上升子序列中,形成一个更长的上升

子序列。因此,我们可以更新dp[i]的值为dp[i]和dp[j]+1中的较大值。

最后,我们遍历dp数组,找到其中的最大值,即为最长上升子序列的长度。

对于样例输入,我们可以按照上述算法进行计算,得到最长上升子序列的长度为4

2、重启系统(2024.3四级)

小明帮助管理一个处理数据的计算系统,有N个待处理的任务,需要按照顺序来完

成这些任务,即每次所完成任务的编号都要大于前一个完成任务的编号,且单个任

务不可以分解完成。计算系统运行着一个奇怪的保护程序,它限制了系统当前所能

处理的数据量不能超过上次完成任务所处理的数据量。重启系统可以使它立刻恢复

到最高性能(一开始系统拥有最高性能,最高性能大于任何待处理任务的数据量)

。小明有一次重启系统的权限(也可以不使用),你能帮他算出最多能完成几个任

务吗?

时间限制:1000

内存限制:65536

输入

第一行:N(2=N=1000)待处理的任务数第二行:

N个整数,每个任务的数据量

输出

输出只包括一行,这一行只包含一个整数,表示最多能完成的任务数。

样例输入

10

15432109876

样例输出

9

提示

回想一下最长上升子序列问题

参考答案:要完成最多任务,我们可以采用动态规划的方法来解决这个问题。我们

可以定义一个dp数组,其中dp[i]表示以第i个任务为结尾的最长上升子序列的长度

。初始化dp数组为1,表示每个任务本身都可以作为一个上升子序列。然后,我们

遍历从1到N的任务,对于每个任务i,我们遍历之前的任务j,如果j

i且任务j的数据量小于任务i的数据量,那么我们可以将任务i加入到以任务j为结尾

的上升子序列中,更新dp[i]为dp[j]+1。最后,我们找到dp数组中的最大值,即为最

多能完成的任务数。

解析:【喵呜刷题小喵解析】:

这个问题实际上是一个最长上升子序列问题,但是增加了限制条件:系统当前所能

处理的数据量不能超过上次完成任务所处理的数据量。这意味着我们不能随意地选

择任务来形成上升子序列,而是需要保证每次选择的任务的数据量不超过前一个任

务的数据量。

为了解决这个问题,我们可以采用动态规划的方法。首先,我们定义一个dp数组,

其中dp[i]表示以第i个任务为结尾的最长上升子序列的长度。然后,我们遍历从1到

N的任务,对于每个任务i,我们遍历之前的任务j

文档评论(0)

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

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

1亿VIP精品文档

相关文档