笔试 | 拼多多 2021届提前批 算法工程师笔试 0901

PDD 2021届提前批 算法工程师笔试

文章首发于公众号“面鲸”,更多大厂笔试面试题解欢迎关注。添加小编微信可获取python题解哦
在这里插入图片描述

第一题
题目描述
  • 对于一个n阶矩阵,首先用米字形把矩阵等分成8个区域,然后从左上角开始,按逆时针顺序给各自区域编号为1,2,…,8。如图所示
    在这里插入图片描述

  • 同时矩阵元素需要满足

    • 各区域内的元素都等于区域的编号
    • 被分割线穿过的元素值都等于0
输入描述
  • 一个数字n,表示矩阵的阶数(3<n<200)
输出描述
  • 输出n行,每行n个数,用空格隔开。表示打印出的矩阵。
样例输入
  • 4
样例输出
  • 0 2 1 0
  • 3 0 0 8
  • 4 0 0 7
  • 0 5 6 0
解析
  • 观察这个“米”字型,能够分为10种情况:8个区域+两条对角线。找每个区域的坐标的特点即可。
第二题
题目描述
  • 多多在玩一个叫做《野蛮》的回合策略游戏。在这个游戏中,地图可以视为一个N*M的矩形,划分为N*M个小正方形的格子。一个格子的上、下、左、右四个格子视为与该格子相邻。
  • 玩家可以自爱每个格子上布置一个士兵。并且每个士兵可以和相邻的士兵归为同一个队伍。在这个游戏中,同一个队伍的士兵数量越多,就越强大。多多现在有一个道具可以移动任意一个格子上的士兵到任意一个格子中。求移动后可得到的最大队伍士兵数。
输入描述
  • 第一行输入两个整数N, M(1<=N, M<=400),分别代表格子的行数和列数
  • 接下来有N行,每行有M个数字(以空格隔开),数字为0或1,代表每个格子里的士兵数量。
输出描述
  • 输出一行表示一个整数,表示可得到的最大队伍士兵数。
样例输入
  • 4 4
  • 1 0 1 1
  • 1 1 0 1
  • 0 0 0 0
  • 1 1 1 1
样例输出
  • 8
说明
  • 一种最优的移动方法
  • 1 0 1 1
  • 1 1 0 0
  • 1 0 0 0
  • 1 1 1 1
解析
  • 首先可以通过DFS求出每一个队伍中士兵的个数;然后枚举要新放士兵的位置(i, j),判断位置(i, j)放一个士兵后可否将不同的队伍联通。注意考虑边界的情况~
  • c++代码:https://paste.ubuntu.com/p/hww9qCxG6C/
  • python代码:公众号后台回复“联系”添加小编微信即可获取~
第三题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值