Java逻辑思维训练题

两柱香问题
题目有两柱不均匀的香,每柱香燃烧完需要1个小时,问:怎样用两柱香切出一个15分钟的时间段?这个题的重点就是怎么切。

答案:将甲香的一头点着,将乙香的两头点着,当乙香燃烧完时,说明已经过了半个小时,同时也说明甲香也正好燃烧了一半,此时,将甲香的另一头点着,从此时起到甲香完全烧完,正好15分钟。

灯管问题
题目:在房里有三盏灯,房外有三个开关,在房外看不见房内的情况,你只能进门一次,你用什么方法来区分那个开关控制那一盏灯?

答案:打开一盏灯10分钟,关掉,打开第二盏,进去看看哪盏亮,摸摸哪盏热,热的是第一个打开的开关开的,亮的是第二个开关开的,另一个就是第三个。

两位盲人问题
题目:他们都各自买了两对黑袜和两对白袜,八对袜了的布质、大小完全相同,而每对袜了都有一张商标纸连着。两位盲人不小心将八对袜了混在一起。 他们每人怎样才能取回黑袜和白袜各两对呢?

答案:每一对分开,一人拿一只,因为袜子不分左右脚的;

果冻问题
题目:你有一桶果冻,其中有黄色,绿色,红色三种,闭上眼睛,同时抓取两个果冻。抓取多少个就可以确定你肯定有两个同一颜色的果冻?

答案:2次4个!

喝啤酒问题
题目:假如每3个空啤酒瓶可以换一瓶啤酒,某人买了10瓶啤酒,那么他最多可以喝到多少瓶啤酒?

答案:喝完10瓶后用9个空瓶换来3瓶啤酒(喝完后有4个空瓶)喝完这三瓶又可以换到1瓶啤酒(喝完后有2个空瓶),这时他有2个空酒瓶,如果他能向老板先借一个空酒瓶,就凑够了3个空瓶可以换到一瓶啤酒,把这瓶喝完后将空瓶还给老板就可以了。

三人住旅馆
题目:有三个人去住旅馆,住三间房,每一间房元,于是他们一共付给老板30,第二天,老板觉得三间房只需要元就够了于是叫小弟退回5给三位客人,谁知小弟贪心,只退回每人,自己偷偷拿了2,这样一来便等于那三位客人每人各花了九元,于是三个人一共花了,再加上小弟独吞了不2,总共是。可是当初他们三个人一共付出30那么还有$1呢?

答案:他们所消费的27元里已经包括小弟贪污的2元了,再加退还的3元=30元。这种题一定不要乱了阵脚,根据一条思路做:这30元现在的分布是:老板拿25元,伙计拿2元,三人各拿1元,正好!

三筐苹果问题
题目:有三筐水果,一筐装的全是苹果,第二筐装的全是橘子,第三筐是橘子与苹果混在一起。筐上的标签都是骗人的,(就是说筐上的标签都是错的)你的任务是拿出其中一筐,从里面只拿一只水果,然后正确写出三筐水果的标签。

答案:从标着“混合”标签的筐里拿一只水果,就可以知道另外两筐装的是什么水果了。

分析:从混合的拿出一个来,如果是苹果,而贴苹果的筐里有可能是橘子和混合,如果是混合,说明贴橘子的筐里是橘子,不成立(因为前提说了,每个标签都是错的)。所以贴苹果的筐里是橘子,则贴橘子的筐里是混合。

猴子吃香蕉问题
题目:一个小猴子边上有100 根香蕉,它要走过50 米才能到家,每次它最多搬50 根香蕉,每走1 米就要吃掉一根,请问它最多能把多少根香蕉搬到家里。

答案:设小猴从0 走到50, 到A 点时候他可以直接抱香蕉回家了, 可是到A 点时候他至少消耗了3A 的香蕉( 到A, 回0, 到A), 一个限制就是小猴只能抱50 只香蕉, 那么在A 点小猴最多49 只香蕉.100-3A=49, 所以A=17. 这样折腾完到家的时候香蕉剩100-3A-(50-A)=50-2A=16.

题目:两人玩游戏,在脑门上贴数字(正整数>=1),只看见对方的,看不见自己的,而且两人的数字相差1,以下是两人的对话:
A:我不知道 
B:我也不知道 
A:我知道了 
B:我也知道了 
问A头上的字是多少?B头上的字是多少() 
A. A是4,B是3 
B. A是3,B是2 
C .A是2,B是1 
D.A是1,B是2

答案B:

【解析】引理1:如果A看到B的头上是1,则A马上可以断定,自己头上的数是2(因为条件给定了数字是正整数且>=1)。 
引理2:如果A看到B的头上是2,并且B说“我不知道”,则A马上可以断定:自己头上的数是3.因为A根据B是2可以推断自己是1或者3:如果自己是1,根据引理1,B应该说“我会知道”。把引理2中的A和B对调,就是选项中的B,并且A在听到B第一次说“我不知道”后的推理情况。 
细致考察“A是3,B是2”这种情况: 
第一次, A看到2,无法判断自己是1还是3,只好说不知道; 
第二次, B看到3,无法判断自己是2还是4,只好说不知道; 
第三次, A得知了“B不知道”,因此B看到的一定不是1(根据引理1),所以断定了自己是3; 
第四次,B得知了“A知道”,因此A如果看到4是无法断定自己是几,因此,A一定是看到了自己头上是2.

A选项中,满足前三个对话,但第四次“B:我也知道了”是无法得出的,因为B无法判断自己是3还是5。 
C选项中,A第一次说“我知道”。 
D选项中,A说了“我不知道”后,B在第二次一定说“我知道”。

逻辑思维题 

. 4 2 12 28 80 (C)
A. 124
B. 96
C. 216
D. 348
 二.2006 年某人连续打工 24 天,共赚了 190 元(日工资 10 元,星期日工资 5 元,星期日

休息无工资)。已知他打工是从 1 月下旬的某一天开始的,这个月的 1 日恰好是星期日,
这人打工结束的那一天是 2 月(C)日

A. 2月6日
B. 2月14日
C. 2月18日
D. 2月21日
 三.甲地到乙地有一天线路的巴士,全程行驶时间 42 分钟,到达总站后,司机至少休

息 10 分钟,巴士就掉头行驶,如果这条线路甲,乙两边总站每隔 8 分钟都发一辆(不必
是同一时间),则这条线路至少需要是多少俩巴士(C)

A. 15 

B. 14

C. 13
D.12
.编号为 1 至 10 的 10 个果盘中,每盘都盛有水果,共盛放 100 个。其中第一盘里有 16

个,并且编号相邻的三个果盘中水果是的和都相等,求第 8 盘中水果最多可能有几个(A)

A. 11
B. 12
C. 13
14. 14

.根据下面图片选出正确的答案(B)

.一只蜗牛掉进 20 米深的井中,白天往上爬 3 米,晚上有掉下去 2 米,请问要几天才

能爬出来?

第一天爬了3米,然后掉了2米,实际上爬了1米;
第二天从1米处开绐向上爬了3米,然后掉了2米,实际上爬了2米;
第三天从2米处开绐向上爬了3米,然后掉了2米,实际上爬了3米;
. .......
第十八天从17米处开始向上爬了3米,嘿刚好是20米.到了
正解:18

.规律填数字 1, 1, 2, 3, ?。

答案:5。
.假设一个池塘,里面有无穷多的水,现在有 2 个空水壶容积分别是 5 升和 6 升,问如
何用这两只水壶取得 3 升水。
答案:5L桶打满水,全部倒入6L桶;
5L桶再次打满,往6L桶倒水至其满。此时5L桶留下4L水;
6L桶清空,将5L桶中的4L水倒入6L桶;
5L桶打满水,往6L桶倒水至其满,则5L桶中得3L水。
.在房里有三盏灯,房外有三个开关,在房外看不见房内的情况,你只能进门一次,你
用什么方法来区分那个开关控制哪一盏灯。
答案:先打开第一个开关,开一会再关上,然后打开第二个开关进入房间
再摸一下每个灯,发热的那盏是第一个开关的,
亮的那盏是第二个开关的,

转载于:https://www.cnblogs.com/wzn520/p/11052098.html

  • 6
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一道Java逻辑思维及其答案: 目:给定一个整数数组nums,找出数组中两个元素的和等于目标数target,并返回这两个元素的索引。假设每个输入只有一个答案,且同一个元素不能使用两次。 例子: 输入:nums = [2, 7, 11, 15], target = 9 输出:[0, 1] 解释:nums[0] + nums[1] = 2 + 7 = 9,因此返回[0, 1]。 回答:这道可以通过使用嵌套循环来解决。外层循环遍历数组中的每一个元素,内层循环从当前元素的下一个位置开始遍历数组。在内层循环中,通过求和判断是否等于目标数。如果等于目标数,则返回两个元素的索引。 以下是使用Java代码实现的答案: ```java public int[] twoSum(int[] nums, int target) { int[] result = new int[2]; for (int i = 0; i < nums.length; i++) { for (int j = i + 1; j < nums.length; j++) { if (nums[i] + nums[j] == target) { result[0] = i; result[1] = j; return result; } } } return result; } ``` 以上的解法的时间复杂度为O(n^2),其中n是数组的长度。但是我们也可以通过使用HashMap来优化解法,将查询的时间复杂度降低到O(n)。 以下是使用HashMap优化的答案: ```java public int[] twoSum(int[] nums, int target) { int[] result = new int[2]; Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { int complement = target - nums[i]; if (map.containsKey(complement)) { result[0] = map.get(complement); result[1] = i; return result; } map.put(nums[i], i); } return result; } ``` 在优化的解法中,我们使用了一个HashMap来存储数组中的元素和它们的索引。我们遍历数组,对于每个元素,计算它与目标数的差值,然后在HashMap中查找是否存在这个差值,如果存在,则找到了解。如果不存在,则将当前元素及其索引放入HashMap中。这样,我们只需要遍历一次数组,即可找到解,时间复杂度为O(n)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值