我们有多诚实

一个温暖的星期六下午,在阿根廷的首都布宜诺斯艾利斯市的巴勒莫公园内,38岁的管理员麦克罗·艾利斯正在例行巡查。这时他看到一张长椅上有一部手机,而长椅上空无一人。“肯定是某个粗心的人遗落了他的手机。”说着,他走过去拿起手机。就在这时,手机响了。艾利斯按下接听键。“是的,你的手机遗落在了巴勒莫公园。”他问手机另一头的女人,“你在哪?”

手机的主人告诉他,她在离巴勒莫公园五条街远的一个地方。艾利斯上赶到她说的地方,把她遗失的手机归还她。

世界的另一边,伦敦市索霍区的中央广场,另一部手机也被它的主人遗落在查理二世的雕像旁。在离查理二世雕像的不远处,一名身穿黑色夹克的三十多岁的男子正在用面包喂鸽子。等一队日本游客走过之后,他马上抓起手机,然后谨慎地看了一眼周围,就迅速离开广场,走上了拥挤的牛津大街。他没有拨打手机电话簿上的任何号码,从此手机的主人再也没有见过这部手机。

在匈牙利的首都布达佩斯,一名靠领养老金生活的老人伊尔迪克·朱华斯兹在购物中心的入口发现了另一部正在闹铃的手机。他捡起手机,跟失主通话,然后坐在一张长椅上耐心等候,直到失主来把它领回。“归还我捡到的每一样东西,”伊尔迪克·朱华斯兹说,“有一次,我捡到了一张社会保障卡,我花了一周时间来寻找那张卡的主人,最终我找到了他,把卡归还他。”

这几个镜头中遗失手机的粗心人都不是公众市民,而是美国《读者文摘》进行的一个实验。

《读者文摘》分派记者到32个国家,在这些国家人口密度最大的城市的公共场所故意“遗失”总共960部中等价格的手机(每个城市派出30部手机),以此来测试人们的诚实度。

在每一个国家,他们隐蔽在一个地方观察了30部手机的遭遇,然后拨打这些手机,看是否每一个人都接听电话,捡到手机后是按照他们已经输进手机的预设号码打电话给他们,还是把手机归为已有。他们故意“遗失”的每一部手机都是带SIM卡的崭新的手机,如果发现者把手机归为已有,他们允许那部手机归他使用。

最后,他们根据收回手机的数量排列每个城市的诚信度。虽然这不是一个科学研究,但是可以映射出一个普通人的行为,当他们面对一笔意外之财会做出怎样的选择:是想方设法归还它,还是自己保留它?

测试的结果,《读者文摘》一共收回了654部手机,占总数的68%。其中,在斯洛文尼亚的卢布尔雅那市收回的手机最多,达到了29部,因而卢布尔雅那市被称为世界上最诚实的城市。紧随其后的是加拿大的多伦多(28部)、韩国的汉城(27部)、瑞典的斯德哥尔摩(26部)、印度的孟买(24部)、美国的纽约(24部)。就连垫底的马来西亚的吉隆坡也收回了13部。这是一个令人振奋的数字。“尽管诸多媒体告诉我们,全世界人民的诚信度正在下滑。”美国加州大学心理学家保罗·艾克曼说,“但通过这个测试我们了解到了一个信息,那就是人们需要信任和被信任。”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这是一个经典的逻辑谜题,可以使用递归回溯的方法求解。下面是代码实现: ```python def solve(n, limits): def dfs(i, nums): # 如果已经遍历完所有人,则判断答案是否合法 if i == n: count = sum(nums) if count in range(limits[0], limits[1]+1): return nums else: return None # 如果当前人可能是诚实的人 if limits[i][0] <= n - sum(nums) <= limits[i][1]: res = dfs(i+1, nums + [1]) if res is not None: return res # 如果当前人可能是说谎的人 if limits[i][1] >= n - sum(nums) >= limits[i][0]: res = dfs(i+1, nums + [0]) if res is not None: return res return None res = dfs(0, []) # 将结果转换为二进制整数 if res is None: return -1 else: return int(''.join(map(str, res)), 2) while True: n = int(input()) if n == 0: break limits = [tuple(map(int, input().split())) for _ in range(n)] print(solve(n, limits)) ``` 思路解析: 首先,我们可以将每个人可能是诚实的人和说谎的人两种情况分别考虑。 对于每一个人,如果他可能是诚实的人,那么在递归的过程中我们就将他标记为1;如果他可能是说谎的人,那么在递归的过程中我们就将他标记为0。 每次递归到一个新的人时,我们判断他可能是诚实的人和说谎的人两种情况,如果都有可能,则分别递归下去;如果都不可能,则返回None;如果只有一种可能,则直接递归下去。 在递归到最后一个人时,我们判断所有人中诚实的人的数量是否在规定的范围内,如果在,则返回结果;如果不在,则返回None。 最后,将结果转换为二进制整数并返回即可。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值