算法据说:这是当年微软招聘人才时出的题目!
开场白:我以为只有广州才有大量的公司有,2刀切金条,7天分给员工的笔试题 , 每次遇到都会骂几变娘,可笑,老板会给你分金条。没想到上海也遍地都是。 据说:这是当年微软招聘人才时出的题目!
二:思路
1.既然每天要给工人的报酬是要一样的,一共7天,那么每天的报酬就是金条的1/7
对半切,再对半切,最多也只有4等分,所以均分切是不可行的。
2.那么我们就可以把金条看成是数字7。
3.可以切2刀,切成3份,分别占1/7、2/7、4/7
三:具体分配
1.第一天拿出1/7给工人,自己还剩:2/7+4/7=6/7
2.第二天拿出2/7给工人,要回第一天的1/7,自己还剩:4/7+1/7=5/7
3.第三天拿出第二天要回来的1/7给工人,自己还剩4/7
4.第四天要回之前的3/7,给工人4/7,自己还剩3/7
5.第五天给工人1/7,自己还剩2/7
6.第六天把2/7给工人,要回1/7,自己还剩1/7
7.第七天把最后的1/7给工人,工资结清了
下一题
来都来了看个更难点的附加题吧。
1000桶水,其中一桶有毒,猪喝毒水后会在15分钟内死去,想用一个小时找到这桶毒水,至少需要几头猪?
限制条件:
1.一滴毒水足以导致一头猪的死亡。死亡时间为15分钟内不确定的某个时间点。
2.其死亡只是毒水导致的,不会有其他因素导致死亡。
3.猪的承水量无穷大,且假设饮一桶花费时间为零。
答案分割线
猪好惨。信息论没学好的少年一进酒店,大伙儿便看着他笑,有的人叫到:少年,你用四头猪还是没找到毒药吧!少年涨红了脸,额上青筋条条绽出,一拍胸口争辩道:这儿还有一头。
用信息论的方法求出至少是5,其他各种想找出5头猪以下的人可以省点力气。在1000桶水中找一桶水,需要的信息量是-log(1/1000)。而一头猪所能提供的信息是它在什么时间死,因此能提供的信息量是-log(1/5)。4头猪能提供的信息量是-4log(1/5)=-log(1/625),不够。5头猪能提供的信息量是-log(1/3125),刚好够。至于用什么信息编码方式就见仁见智了,楼上有的回答就很好。这里只是严谨地证明一下“至少”。
一头猪一个小时内最多可以喝四次水,所以分四段,第一第二第三第四段时间死,以及不死。
一头猪的信息量为log(1/5)