博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
98%的人没解出的德国面试逻辑题
阅读量:4495 次
发布时间:2019-06-08

本文共 1365 字,大约阅读时间需要 4 分钟。

之前在某网站上看过一个号称“98%的人没解出的德国软件工程师面试逻辑题”,虽然不知道是真是假,但是今天姑且论论。

//该文章,来自于我的另一个CSDN帐号,此处我对其优化.

题目如下:“一桶16斤的水,还有一个8斤的空水桶,和一个3斤的空水桶,问如何平均而精确地分给4个人。”(注意那4个人是可以携带任意水的,博主求六步内的解法,但是其他人给了很多解法,但是没有真正六步内的。)。

我想看完题目,很多人都已经有了一个普遍的思路,就是分!装!分!直到分出4个4斤的(其实这就是回答博主所有答案模式)。但是这并不算是程序员的打开方式。而是应该编写一个程序能根据N个数字(比如8,3)对某个数字(比如16)进行分解,然后进行拼接(比如4)就可以了。不过,既然知道了程序的解法,那么也就有了我们的一种思路。也就是首先找出,8,3对16的分解方法,然后再进行拼接。

为了方便表示,我们用Array all表示全部的水.用this.array表示此步得到的仅有此步分解的结果数组
这时我们先进行分解,比如

16-->8=8+8     //表示16斤水用8斤的桶进行分解,得到两份8斤的水,以下同理     8*2-->3=(5+3)*2     this.array=all=[3,3,5,5]     //表示两份八斤的水,用3斤的桶进行分解,得到两份(五斤的水,和三斤的水),...     5*2-->3=(3+2)*2     this.array=[2,2,3,3]     all=[2,2,3,3,3,3]

但是因为我们要得到的是4个4,而此时的数字明显还不够进行拼接,并且因为之前都是用3进行分解的,但是要对之后的数字进行分解,明显需要更小的数字对3进行增加,以减少无法单独分解的3,而

2+2-->3=3+1

明显不符合条件,而2位数字的相加再分解,效果看起来也不是很明朗,此时则应当建立3位数字的相加,分解,以此分解多余的3。不过,其实一开始,我优先考虑的就是

3+3+3-->8=8+1

因为这时可以再得到,一个8和一个1,而8可以在进行第一步的分解,这样可以简化算法,而1刚好可以对3进行增加。

3+3+3-->8=8+18-->5=5+3-->2+3+3this.array=[1,2,3,3]all=[1,2,2,2,3,3,3]//重复上面的分解步骤3+3+3-->8=8+18-->5=5+3-->2+3+3this.array=[1,2,3,3]all=[1,1,2,2,2,2,3,3]//此时可得result=[4,4,4,4]//简化以上步骤,function xxx(...){    for(...){        ...        8–>3–>3=3,3,2        ...        3+3+3–>8=8,1        ...    }    return result;}

这大概就是我对这道问题的终极解法,真是的计算步骤,简练方便,可移植。而其得出得益于编程思想,而编程思想又反哺于我们的生活。

“编程教给了我另一种思维方式。”——史蒂夫·乔布斯(《遗失的访谈》)

转载于:https://www.cnblogs.com/fonttian/p/9162877.html

你可能感兴趣的文章
Sun JVM 内存模型及垃圾回收策略
查看>>
第3周实践项目7 删除链表元素最大值
查看>>
洛谷2408不同字串个数/SPOJ 694/705 (后缀数组SA)
查看>>
s12-day03-work01 python修改haproxy配置文件(初级版本)
查看>>
html5 聊天 宿舍 宿舍列表
查看>>
音乐的作曲形式
查看>>
matlab 各种文件的读取(及读写问题的解决)
查看>>
ie9下 “__flash__removeCallback”未定义
查看>>
Java虚拟机垃圾回收:基础点(转载)
查看>>
第五章项目----租房网
查看>>
CodeForces 834C The Meaningless Game (机智)
查看>>
深入分析 Java I/O 的工作机制(转)
查看>>
Python高级特性:迭代器和生成器 -转
查看>>
修炼编程的内功
查看>>
Ext JS - Ext.grid.feature.Grouping 分组表格
查看>>
ZConfig手册
查看>>
linux用户和用户组管理详解
查看>>
Jmeter之集合点
查看>>
JavaScript 基础,登录前端验证
查看>>
SQLite帮助类SQlitehelper 实现对SQLite数据的增删改查
查看>>