2017错题整理集

 

题目答案

B

题目解析

本题考察数据结构基础知识。栈顶为hs,此时s要进栈,由于是链式栈,所以首先将s的下一个节点位置指向hs,然后把hs指向s所指向的地址。

 

题目答案

D

题目解析

考察算法基础知识。归并排序当有一方为空的时候,就可以不用再进行比较,直接将另一方剩余元素接在数组后面即可。否则每进行一次比较,均有一个元素可以接到数组后面,故总比较次数为:总元素个数减去一方为空时另一方的剩余元素个数。

所以最少的剩余元素个数是 1,最多比较次数为 2n−1 次。

 

题目答案

C

 

题目答案

填空位置 ①:

1009

填空位置 ②:

1008

题目解析

本题考查发现数学规律的能力。可以发现,对于第 4n 轮,坐标均为(−2n,2n)。因此,2016 轮后,坐标变为(−1008,1008)。从 2016轮的位置到 2017 轮,走步的方法为向右走 2017 个单位,因此坐标变为(1009,1008)。

 

 

 

题目答案

填空位置 ①:

1 3

填空位置 ②:

2017 1

题目解析

此程序有两个关键变量xyx的值从 1 到 n 再到 1 循环;y的值从 1 到 m 再到 1 循环。程序求的是xy同时变为边界值时,边界值为多少。观察发现x周期为 2n−2,y周期为 2m−2。因此,对 n−1 与 m−1 求最小公倍数 D,用 D 分别除以 n−1 和 m−1,观察结果。如果结果为偶数,那么对应的值为 1,否则为 n 或 m。

分析功能可知,该程序是模拟一个初始位于一个长为 n,宽为 m 的盒子内的左下角有一个小球初始向正右上方向移动,碰到盒子边界之后就会完全反弹,求第二次碰到盒子时小球的坐标,通过画图模拟也可以得出结果。

 

 

 

题目答案

填空位置 ①:

count = count + len[i]

填空位置 ②:

count < m

填空位置 ③:

lbound < ubound

填空位置 ④:

(lbound + ubound + 1) / 2

填空位置 ⑤:

count = count +len[i] / mid

题目解析

本题主要考查二分算法和贪心算法。二分算法中间的for循环使用贪心算法计算能够切割出的绳段个数。

结合第 ①② 空可知,当绳段长度为 1 时可以切出的绳段个数最多,即所有绳子的长度相加,所以输出Failed的条件应该是所有绳子的总长度小于 m。故用count计算总长度,第 ① 空填count=count+len[i]count+=len[i],第二空填count<mm>count

第 ③④⑤ 空均在二分里,第 ③ 空是二分的结束条件,故应该填lbound<ubound或者ubound>lbound,即当前二分的区间长度还大于 11 的时候,说明没有确定最终值是多少。第 ④ 空需要特别注意,由于底下ubound是通过mid-1lbound是通过mid来更新的,所以这空需要填(lbound+ubound+1)/2(lbound+ubound+1)>>1(lbound+ubound)/2+1,三者意思相同。

第 ⑤ 空是用来求当确定绳子的切割长度为mid后,最多能切多少段绳段,故应该填count=count+len[i]/mid或者count+=len[i]/mid

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值