别乱说,算法才不是脑筋急转弯

640?wx_fmt=gif


老崔去某厂笔试时,遇到了经典的「狼、羊、白菜 过河问题」。


由于经常看算法方面的内容,这道对于他来说,so easy。


题目大概是这样:


题号1:

农夫需要把狼、羊、菜和自己运到河对岸去,只有农夫能够划船,而且船比较小,除农夫之外每次只能运一种东西,还有一个棘手问题,就是如果没有农夫看着,羊会偷吃菜,狼会吃羊。


请考虑一种方法,让农夫能够安全地安排这些东西和他自己过河。



老崔回家,自信满满的和女友说这道题时,女友反问到:“为啥程序员面试要考脑筋急转弯呀!?”


老崔这时认真起来,用理科生的严肃态度反驳女友:“这不是什么脑筋急转弯,这是道算法题,脑筋急转弯都是小聪明的歪理,别搞错了好不好~u1F602.png?tp=webp&wxfrom=5&wx_lazy=1


640?wx_fmt=jpeg


如果你不是程序员,又坚持说上道题是脑筋急转弯,那你再来看看这道题:


题号2:

请你把10根放在篮子里的香蕉分给10只猴子,每只猴要得到一根,最后篮子里还要留下一根香蕉,你能做到吗?



不好意思地说,这道题是小学二年级的一道数学竞赛题,给你一些时间,思索一下,这道题是不是更有脑洞大开的味道。


作为程序员,去大厂笔试时都会遇到算法题,有些是正经的题,有些则看上去就是用来坑你的。


题目3:

你让一个工人为你工作七天,用一根金条作为报酬。金条被分成7小块,可以每天支付一块。


但是,如果你只能将金条切割两次,那么你如何切割金条,能满足每天支付一块给工人呢?


这题很简单,并不需要什么算法,其实是在考量你的数学思维。


如果你把精力只用在处理金条上,并不考虑实际场景,那你就把自己坑了。


坦率地讲,上面那些题都像是来搞笑的。


下面认真给出一些算法题:


题目4:

你有不限量的水,还有两个水桶,容积分别是5升和3升。


如何精确地称量出4升水?


如果你有答案,那么看看这道题的升级版:


题目5:

现在有三个容积分别是3升、5升和8升的水桶,其中容积为8升的水桶中装满了水,容积为3升和容积为5升的水桶是空的。


三个水桶都没有体积刻度,现在需要将大水桶中的8升水等分成两份,每份都是4升水,(附加条件是只能使用另外两个空水桶)


这道题不止一个方案,一共有多少种方案,桶与桶之间倒水的次数哪种方案最少?这就是一个算法题了。


类似这种水桶倒水的问题,确实是各个大厂笔试的常见题目,也是筛除小白程序员和算法工程师的关键题。

这道题答对了,月薪要40K,答不对就要4K。


如果用人类的思维方式,那么解决这个问题的关键是怎么通过倒水凑出确定的1升水或能容纳1升水的空间,三只水桶的容积分别是3、5和8,用这三个数做加减运算,可以得到很多组答案。


但是计算机并不能理解这个「1」的重要性,很难按照人类的思维方式按部就班地推导答案。


因此用计算机解决这个问题,通常会选择使用「穷举法」。


为什么使用「穷举法」呢?


因为这不是一个典型意义上的求解最优解的问题,虽然可能暗含了求解倒水次数最少的方法的要求。


但就本质而言,常用的求解最优解问题的高效方法都不适用于此问题。


如果能够穷举解空间的全部合法解,然后通过比较找到最优解也是一种求解最优解的方法。


求解这个问题的算法本质上就是对状态的穷举搜索。


这样状态变化搜索的结果通常是得到一棵状态搜索树,根节点是初始状态,叶子节点可能是最终状态,也可能是某个无法转换到最终状态的中间状态。


640?wx_fmt=png


靠算法题筛选人才


下面梳理了算法面试时筛选人才时类似的关键题目,有些简单的,有复杂的。


大家不妨先收藏下来,抽空解答一下,秀一秀自己智商,再看看要不要找老板谈个加薪或者其他福利。


题目6:

现在有两种砖,分别是1*1的砖和1*2的砖,用这两种砖铺 1*N 的地面。


问共有多少种铺法?(输入为N,请输出相应的铺法数,经典铺砖问题)


题目7:

12个高矮不同的人,排成两排,每排必须是从矮到高排列,且第二排比第一排对应的人高。


求排列方式有多少种? 


题目8:

从一副扑克中随机抽取5张牌,判断是不是顺子(5张牌数字连续,大小王为任意数字)。


题目9:

输入两个整数 n 和 m,从数列 1,2,3……n 中随机取几个数,使其和等于m,要求将其中所有的可能组合列出来。 


题目10:

输入一个正整数 n,输出所有和为 n 的连续正整数序列。

最后再摆一道,烧脑题

传说中的爱因斯坦提出的思考题,他宣称世界上只有2%的人能解出这个题目,你肯定听说过不下一次这道题,但也肯定你始终连题目都没记清楚过。


640?wx_fmt=jpeg

题目如下:


据说有五个不同颜色的房间排成一排,每个房间里分别住着一个不同国籍的人,每个人都喝一种特定品牌的饮料,抽一种特定品牌的烟,养一种宠物,没有任意两个人抽相同品牌的香烟,或喝相同品牌的饮料,或养相同的宠物。


问题是谁在养鱼作为宠物?为了寻找答案,爱因斯坦给出了以下15条线索。


1. 英国人住在红色的房子里;


2. 瑞典人养狗作为宠物;


3. 丹麦人喝茶;


4. 绿房子紧挨着白房子,在白房子的左边;


5. 绿房子的主人喝咖啡;


6. 抽 Pall Mall 牌香烟的人养鸟;


7. 黄色房子里的人抽 Dunhill 牌香烟;


8. 住在中间那个房子里的人喝牛奶;


9. 挪威人住在第一个房子里面;


10. 抽 Blends 牌香烟的人和养猫的人相邻;


11. 养马的人和抽 Dunhill 牌香烟的人相邻;


12. 抽 BlueMaster 牌香烟的人喝啤酒;


13. 德国人抽 Prince 牌香烟;


14. 挪威人和住在蓝房子的人相邻;


15. 抽 Blends 牌香烟的人和喝矿泉水的人相邻。


留言活动:

不要百度:靠自己能力,留下你的答案


一般人很难记住这么多线索,即使之前看过这道题,蒙对了答案,但让你写一下算法思路,照样傻眼。 


如果你是真算法工程师,那就不是一般人儿了,请再次秀出你的智商。


应试教育出来的我们,在上学学习期间缺少方法和指导,工作这些年也可能很少接触要自己动手写算法的任务。


但算法,一直都是体现程序员能力的基本要素,也是拉开收入差距的关键指标。

想学算法?


缺方法?

7大方面,从基础到应用,趣味精讲算法;

缺时间?

43天,1天1个算法知识,每天15分钟;

缺练习?

35个经典算法相关案例分析;


原价:69.00

限时特价:49.00

>> 算法应该怎么玩?<<

640?wx_fmt=png


分享决定技术高度

学习拉开技术差距

 >>GitChat<< 

640?wx_fmt=png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML坐标不随着屏幕大小改变,HTML热区map坐标,随窗口大小自适应办法(javascript)...

为图片添加MAP&#xff1a;/>/>/>/>图片大小随页面变化&#xff0c;需要MAP中每个area的坐标也随页面等比例变化。Javascript实现&#xff1a;adjust();var timeout null;//onresize触发次数过多&#xff0c;设置定时器window.onresize function () {clearTimeou…

ASP.NET 2.0防止同一用户同时登陆

from:http://www.cnblogs.com/ly5201314/archive/2008/09/04/1284149.html 要防止同一用户同时登陆,首页应该记录在线用户的信息(这里与用户名为例),然后判断正在登陆的用户里面是否已存在。在这里使用一个cache存放已经登陆的用户名&#xff0c;但是还有一个问题就是要知道用户…

NET问答: Find() 和 Where().FirstOrDefault() 该如何选择 ?

咨询区 KingOfHypocrites&#xff1a;我经常看到别人用 Where.FirstOrDefault() 获取某一个匹配集合的第一个元素&#xff0c;我在想为什么他们不使用 Find() 呢 ? 是不是前者更高级一点&#xff1f;有人能告诉我它们的差别吗&#xff1f;比如下面的代码&#xff1a;namespace…

python实战,教你用微信每天给女朋友说晚安

但凡一件事&#xff0c;稍微有些重复&#xff0c;我就考虑怎么样用程序来实现它。这里给各位程序员朋友分享如何每天给朋友定时微信发送”晚安“&#xff0c;故事&#xff0c;新闻等等。最好运行在服务器上&#xff0c;这样后台挂起来更方便。准备&#xff1a;**微信号** pip i…

error LNK2001: unresolved external symbol public: __thiscall CNaDialog::CNaDialog(class CWnd *)

这种情况的报错原因是: 新建了类, 没有在FileView里添加相关的类文件, 包括头文件(h)和源代码文件(cpp). 把类的这两个文件分别添加上去就可以了. 转载于:https://www.cnblogs.com/xiaocai0923/archive/2011/11/13/2247530.html

学计算机与学英语作文,初二英语作文(关于计算机与学习)

鲁铁华回答&#xff1a;Thereisabiginfluenceoftechniqueonourdailylife.Electronicdevices,multimediaandcomputersarethingswehavetodealwitheveryday.EspeciallytheInternetisbecomingmoreandmoreimportantfornearlyeverybodyasitisoneofthenewestandmostforward-lookingmed…

一文说通C#的属性Attribute

属性Attributes这个东西&#xff0c;用好了可以省N多代码。一、属性属性Attributes在C#中很常用&#xff0c;但事实上很多人对这个东西又很陌生。从概念上讲&#xff0c;属性提供的是将元数据关系到元素的一种方式。属性使用的样子&#xff0c;应该都见过&#xff1a;[Flags] /…

10号发工资和20号发工资的公司,区别竟然这么大?

工资的话题一直占据着职场热度榜单这不最近又热起来了10号发工资和20号发工资&#xff0c;就能看出一个公司是否靠谱?对很多工薪族来说发工资这一天是脱贫致富的重要日子也是很多人的还款日子而这几年&#xff0c;一直有种说法发薪日是公司生态的一个缩影可以由此看出一个公司…

Exchange2003-2010迁移系列之九,创建DAG组

创建DAG两台Mailbox服务器部署完成后&#xff0c;我们接下来要在Mailbox服务器上配置DAG了。配置DAG的目的是为了增强邮件服务器的高可用&#xff0c;避免一台Mailbox服务器损坏之后&#xff0c;邮件系统用户无法访问邮箱。但在部署DAG之前&#xff0c;我们要了解下列几点&…

微型计算机原理计算两数和,微型计算机原理及汇编语言 第2章-2 补码及加减运算.ppt...

微型计算机原理及汇编语言 第2章-2 补码及加减运算2.4 数的定点与浮点表示法 2.4.1 定点表示 所谓定点表示法&#xff0c;是指小数点在数中的位置是固定的。原理上讲&#xff0c;小数点的位置固定在哪一位都是可以的&#xff0c;但通常将数据表示成纯小数或纯整数形式&#xff…

2011 美术

以下内容为互联网获得&#xff0c;本人不对答案负责&#xff01;如果文章引用对您造成伤害&#xff0c;请联系我&#xff0c;将其删除&#xff01;1、文艺复兴三杰达芬奇、米开朗基罗、拉斐尔2、古埃及绘画以附着于墓室墙体的壁画 代表&#xff0c;与浮雕具有相同的艺术特征&am…

趣图:脸部识别最快的实现

脸部识别/追踪最快的实现&#xff0c;没有之一↓↓↓网友评论&#xff1a;二零醚&#xff1a;硬件实现的效率总是最高的胡斌dev&#xff1a;使用这个程序是不是还配送一个框框&#xff1f;fan__y&#xff1a;牛逼&#xff0c;连转过去都能识别到Shao_Meng&#xff1a;而且 CPU …

Polly-故障处理和弹性应对很有一手

前言对于运行中的系统&#xff0c;可以说百分百的小伙伴会经常遇见以下问题&#xff1a;网络不通&#xff0c;突然又好了&#xff1b;服务器宕机了&#xff1b;调用服务接口超时了&#xff1b;调用接口报错啦&#xff1b;通讯信息发送失败需要重发&#xff1b;以上只是列举了一…

电脑桌面不显示此电脑或是计算机,电脑怎么显示出此电脑?此电脑显示的设置方法...

电脑怎么显示出此电脑?安装win10之后&#xff0c;打开时发现桌面上没有我的电脑图标&#xff0c;这对于很多人来说非常不适应&#xff0c;那么win10我的电脑图标没了怎么办?我们怎么才能让我的电脑显示在桌面呢?针对这个问题&#xff0c;下面U大侠小编就给大家介绍此电脑显示…

用Python分析了20万场吃鸡数据,有不少有趣的发现

首先&#xff0c;神枪镇楼&#xff1a;背景最近老板爱上了吃鸡&#xff08;手游&#xff1a;全军出击&#xff09;&#xff0c;经常拉着我们开黑&#xff0c;只能放弃午休的时间&#xff0c;陪老板在沙漠里奔波。 上周在在微信游戏频道看战绩的时候突发奇想&#xff0c;是不是可…

万字长文,带你彻底理解EF Core5的运行机制,让你成为团队中的EF Core专家

在EF Core 5中&#xff0c;有很多方式可以窥察工作流程中发生的事情&#xff0c;并与该信息进行交互。这些功能点包括日志记录&#xff0c;拦截&#xff0c;事件处理程序和一些超酷的最新出现的调试功能。EF团队甚至从Entity Framework的第一个版本中恢复了一些有用的旧的功能。…

重学数据结构004——栈的基本操作及实现(数组实现)

上文提到过栈以及栈的基本操作。上文中是基于链表做的实现。但是这种方法会出现大量的malloc()和free()操作&#xff0c;这种开销是非常昂贵的。 另外一种实现方式是基于数组的实现。这种实现方式需要预先制定一个栈的大小&#xff0c;此外还需要一个Top来记录栈顶元素下一个位…

使有用计算机不注意卫生,保护眼睛注意细节有哪些

长期面对电脑&#xff0c;很多白领都出现了视力下降、眼睛干涩等眼疾&#xff0c;上班族?下面就让小编来告诉你答案。上班族保护眼睛注意细节细节一&#xff1a;看电脑时眼睛度数应浅一些在电脑屏幕前工作时间长了&#xff0c;眼睛容易出现流泪、异物感、视物不清甚至视力下降…

C#使用线程窗口调试多线程程序

调试多线程程序一般有以下几种办法1、在日志的某个地方写日志文件。优点&#xff1a;不会干扰程序的执行&#xff0c;特别是对网络的多线程通信。缺点&#xff1a;每次都需要打开日志文件以查看进程运行的信息。2、利用断点进行调试。优点&#xff1a;直观&#xff0c;可以直接…

窥探渣男天才爱因斯坦的一生

本文授权转自微信公众号超级数学建模&#xff08;ID&#xff1a;supermodeling&#xff09;----------------------------------提起爱因斯坦&#xff0c;你最先想到什么&#xff1f;相对论&#xff1f;原子弹&#xff1f;物理天才&#xff1f;Emc?然而&#xff0c;2017年由美…