一、投递信息
投递时间:2020年2月28日
岗位:IT类(开发方向)
工作地点:上海
信息来源:招商银行信用卡中心招聘公众号
回复时间:2020年4月27日
笔试时间:2020年4月29日9:00—11:00
笔试平台:牛客网
二、笔试题
- 编程题1:金币 ( 动态规划)
小招在玩一款游戏:在一个N层高的金字塔上,以金字塔顶为第一层,第i层有i个落点,每个落点有若干枚金币,在落点可以跳向左斜向下或向右斜向下的落点。若知道金字塔的层数N及每层的金币数量分布,请计算小招在本次游戏中可以获得的最多金币数量。
输入描述:
输入共有N + 1行(N ≤ 1024),第一行为高度N,第二行至N + 1行 ,为该金字塔的金币数量分布。
输出描述:
输出金币数量
示例1
输入
5
8
3 8
8 1 0
4 7 5 4
3 5 2 6 5
输出
31 - 编程题2:交换座位 AC
在一场集体婚礼上,有n对新人需要坐在连续排列的 2n个座位上合影,同一对新人彼此挨着。由于进场时各对新人并未按序入座,请计算最少交换座位的次数,以便使每对新人均可并肩坐在一起。一次交换可选择任意两人,让他们互换座位。
全部新人的序号可用 0 到 2n-1 的整数表示,第一对是 (0, 1),第二对是 (2, 3),以此类推,最后一对是 (2n-2, 2n-1)。
row[i]指最初坐在第 i 个座位上的新人编号,i是从0到(2n-1)的一个升序全排列,row不存在重复值。
输入描述:
输入共有2行,第一行为n,即共有多少对新人(2≤n≤100000 ),第二行为row,即2n个座位上的初始新人编号。
输出描述:
输出最少交换座位的次数
示例1
输入
2
0 2 1 3
输出
1
说明
我们只需要交换1和2的位置即可
示例2
输入
2
3 2 0 1
输出
0
说明
无需交换座位,所有的新人都已经并肩坐在一起 - 编程题3:修塔游戏
题目描述
小招正在玩一款修塔游戏:系统中有n座高塔,每座高塔由若干个高度相同的方块堆砌而成。修塔游戏的规则为:
(1)每次从最高塔的塔尖拿走一个方块
(2)每次在最低塔的塔尖堆砌一个方块
小招每次只能完成上述两个动作中的一个动作。游戏的目标是使n座高塔中至少有k座高塔的高度相同,请问小招最少需要多少次才能完成游戏。
输入描述:
输入共有2行,第一行为n和k(1≤k≤n≤200000 ),第二行为n座塔的高度组成的数组 a1, a2, …an(1≤aj≤10000)。
输出描述:
输出值为最少需要多少次动作才能完成游戏。
示例1
输入
6 5
1 2 2 4 2 3
输出
3