联想AI研究院面试题总结(3道算法题)

本文记录了作者在联想AI研究院面试时遇到的三道算法题,包括如何将矩形分割成正方形使得边长之和最小、求乘积最大的组合以及任务分配问题。解题思路涉及贪心算法、数学归纳法和组合优化,面试过程中对贪心策略的正确性未给出严格证明。
摘要由CSDN通过智能技术生成

         最近参加了联想AI研究院的面试(岗位自然语言处理),除了问到简历中项目以及简单的机器学习问题外,还问了3道算法题,并且都不是拿到马上就能反应出来解法的题目(也可能是本人经验尚缺)。特记录面试过程和题目分析如下,由于没有标答,我想到的解法仅是抛砖引玉,欢迎大家一起探讨。


       短暂的简历讨论后,面试官抛出题目1:


       题目1:一个矩形边长为x、y,都是正整数(但其大小关系未知),将其分割成若干小正方形,每个小正方形边长可互不相等但需要都为正整数。如何划分使得这些小正方形的边长之和最小?

       面试思路:首先想到既然是考算法题,那么不外乎分治法、动态规划、贪心、回溯等等几种。如果要把一个矩形切分成正方形,并且恰好全部切分干净,那么最差的一种方法是全部分解成边长为1的小正方形,这样由于共有xy个正方形,则边长和为xy。

       再考虑是否有更好的解法。考虑一个2x2的正方形,若作为一个整体,则边长为2;若分解成4个1x1的小正方形,边长和变成4。这提示我们分割时尽量分出更大的正方形。

       由此想到贪心法:分解方法为:程序每次分出当前能分割的边长最大的正方形,若已全部分完,则程序结束;若还有剩余的部分,则对剩余部分再继续按这个方法分解。向面试官描述该思路后,面试官肯定了该思路并又提出如下两个问题:


       题目1.1求出边长之和的最小值

       题目1.2证明贪心策略的正确性

       对于这两个子问题,面试官大概分别给出5分钟的时间,面试现场都没有做出来,回来后经过思考总结如下:

       1) 由于面试时考虑复杂了,一直在研究x和y之间数量关系。回来后发现对于1.1这类题目要在短时间内做出来最好的方

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值