又到一年校招时,阿里集团虽然今年休养生息,缩紧招聘,但是现在继续开放校招,不过只招a类学生,也就是重点学校的最优学生(面试官认为),以往多半是研究生居多,本科生录用比率减少,但是编程逻辑思维好的学生仍然是不多的,这是去年出的一道原创题和它的标准答案,做对的人非常少。
题目:把N个鸡蛋放到M个篮子里,每个篮子不能为空,要求满足:任意给出一个不超过N的数量,都能找到其中某几个篮子的鸡蛋和等于它。
请写一个程序,输入N,M,然后输出所有的鸡蛋放法。
题目解释:例如6个鸡蛋放3个篮子的一种可能为1,2,3,任意给出1<=x<=6的值,都可以找到1,2,3中的组合的和等于x.
该题目最早是我在网上看到一道600个鸡蛋放在10个篮子的放法,答案是给出了一个按2的乘积放的特例。我将其改编后用来招聘时考察工程师上机编程技能。
解题思路如下:
假设第一个篮子放一个鸡蛋:
那么1,X2中,X2可以放鸡蛋的范围是1<= X2<=2, 如果X2=3,便满足不了给出n=2的情况了
取X2=2
那么1,2,X3中,X3可以放鸡蛋的范围是2<= X3<=4
......
可以推出数学公式:在前m个篮子满足要求时,第m+1个篮子可以放置的鸡蛋数范围应该是: Xm<=Xm+1<=N+1
该范围同时也是搜索解的空间,比较好用递归实现,对于每找到一个符合范围的Xm,可以进一步深度遍历寻找下一个Xm+1, 由此便容易理解标准答案的实现了。
如果使用蛮力计算出所有组合,再逐一过滤筛选也可以实现,但是程序肯定要比上面繁琐,效率较低。
希望通过该题目能筛选到编程上有天赋的学生,特别是能独立完成构思和代码编写的,应该是很有潜力的。只是该类型的题目并不是特别适合笔试,很多学生写了大段代码逻辑难以判断是否能正确输出,笔试只适合考基础知识,进一步可安排其上机检查其程序技能。
参考答案(保存成html运行即可):
<script>
var n=20,m=5;
var total=0;
var arr = new Array(m);
function exerun(j,t,s){
for(var i=j;i<t+2;i++){
if(s==m-1){
if(n-t<t+2&&n-t>=j){
arr[s]=n-t;
document.writeln(arr+"<br>");
total++;
}
break;
}else if(t+i<n){
arr[s]=i;
exerun(i,t+i,s+1);
}else break;
}
}
exerun(1,0,0);
document.writeln("total:"+total);
</script>
思维延伸:对于太巨大的数字会超出单台机器的计算局限导致缓慢,对次,可考虑采用并行计算方式设计算法,分解到不同机器计算,再合并结果,留给读者去思考。
淘宝分布式并行计算框架fourinone(java实现)下载地址:
http://www.skycn.com/soft/68321.html
邮箱:Fourinone@yeah.net
分享到:
相关推荐
4个相同的鸡蛋放入4个不同的篮子,有几种放法?允许篮子为空。 包括.cpp代码和设计文档。不带工程文件,需自建VC++工程(开发环境为VS2005)
基于深度学习的篮子期权定价数值算法.pdf
数学模型光明市的菜篮子工程的答案,答案详细,容易理解
菜篮子工程作为利民惠民的重要措施之一,受到了广大市民的欢迎,也给...本文基于图论及算法建立最短路径模型,通过改变目标函数和约束条件建立不同的线性规划模型,实现对定点供应方案的设计以及对最低损失金额的求解
数学建模研究菜篮子工程中的蔬菜种植问题
银行业银行兴衰专题报告之三:当鸡蛋放在同一个篮子里-20190526-国海证券-17页.pdf
小学数学数学故事篮子里的鸡蛋
菜篮子工程数学建模期末.pdf
书签被保存为“鸡蛋放在篮子里的鸡蛋”。 创建鸡蛋后,您可以在http://codelikeachicken.com/?#/TheEggBasket的“鸡蛋篮”应用程序中查看它。 到达那里后,您可以查看和管理所有鸡蛋或添加其他鸡蛋。 该Chrome扩展...
资源包含了谷歌算法大赛的几个算法编程问题(包括磁盘问题,公交车,画图,矩阵中查找单词路径,球和篮子,扔石头问题)的要求和解答,适合喜欢算法的人研究,锻炼编程思维,挑战自我!
该题主要就是设计一个定点供应方案,要求损失最少,从而得到最优供应方案。损失主要包括供应不足产生的费用和调运费。其中调运费主要取决于路径的选择,解决路径的问题需要用到弗洛伊德算法和蚁群算法,用matlab软件...
已知n个篮子一字排开(n为用户输入的任意正整数),从左到右分别标着号:1,2,... ...,n;每个球也有编号,分别也是1,2,... ...,n。现要将这n个球全部放入这n个篮子中,满足:每个篮子放置1个球,球的号不能...
大数学家欧拉在集市上遇到了本村的两个农妇,每人跨着个空篮子。她们和欧拉打招呼说两人刚刚卖完了所有的鸡蛋。 欧拉随便问:“卖了多少鸡蛋呢?” 不料一个说:“我们两人自己卖自己的,一共卖了150个鸡蛋,虽然...
market-basket-analysis:我使用Apriori算法在此项目中执行了“市场篮子分析”。 Apriori算法是数据挖掘中的经典算法。它用于挖掘频繁项集和相关的关联规则。它被设计为在包含大量交易的数据库上运行,例如,商店中...
侵入式和非侵入式队列:Michael & Scott 无锁和基于读/写锁, Moir et al algo, Ladan-Mozes & Shavit 乐观队列, 篮子队列, 有界(环缓冲)算法 侵入式和非侵入式有序列表:Michael 算法、惰性列表算法、可迭代...
NULL 博文链接:https://onestopweb.iteye.com/blog/2356420
加球描述把球放在篮子里
某市是一个人口不到15万的小城市,根据该市的蔬菜种植情况,分别在A、B、C三地设三个收购点,再由收购点分别送到全市8个蔬菜市场。按照常年情况,A、B、C三个收购点每天收购量分别为200、170和160(单位:100kg),...
绿色环保菜篮子工程画册(内含cdr格式源文件及jpg图片文件)