今天去面试,面试官出了一个算法题,题目如下:
假设有一个 4 层的货架,8 种饮料(饮料重量一致),现每层放 2 中饮料,要求每层货架的重量不能大于 20kg,2 种饮料的关系《xA!=yB》,就是说如果 a 的重量为 200,b 的重量为 400,2a=b,a 和 b 就不能放在同一层,最终输出所有的排列可能
麻烦看懂了题目意思并且有实现思路的大神帮我解答下。。。
x=B y=A 岂不是符合条件的组合都不存在了?
我想我当时会想和面试官说:可以让我回家了么
感觉信息没给全
饮料重量应该不一致的吧,另外 xA!=yB,这里的 x,y 应该是确定值。基于这个条件的我的一个思路:
首先实现一个全排列顺序的打印,然后在合适的位置过滤掉不满足条件的记录(xA==yB or A+B >20kg)
没学过背包算法,不知道是否可以用背包算法
A=B 且 xA!=yB? xy 总要有规则吧要么怎么解呀?
xA!=yB 最大公约数=1,我理解。剩下递归。
下次碰到这种,你让面试官手写代码,我不信他写的出来。
这种题目比较模糊的,最好不要直接说 不会,要追问面试官,细节的东西,然后自己再思考一下思路,即使没做出来,也可以留下一个比较好的印象
是不是少一个条件是单个饮料 1kg?,1.先饮料 8 选 2 出来所有饮料组合的情况。2.再根据单个饮料重量和总重量 20kg,算出一种组合有多少种饮料数目组合的情况,最后再按照 4 层排列。我想的,不知道对不对。