和尚挑水故事IT新解

在昨日写《小谈子对象中接口的设计原则》这篇博文的时候,突然想到三个和尚没水喝的故事,想来特有意思。故再次拿出来说明一下。

一个和尚挑水喝,两个和尚抬水喝,三个和尚没水喝。这个寓言故事是大家都非常熟悉的。但是,我想问一下,多个和尚真的不好吗?如果真的不能太多,那么多少个和尚最合适了?

其实我拿出来的原因之一,大多是因为我自己的缺点所在。我自己是一个绝对的技术人员,因此,我有着技术人员都可能拥有的弊病。解决问题的潜意识中,总是希望隔离系统和周围的联系。我非常擅长处理独立复杂的系统。但是,很显然,我潜意识中总是避免处理联系。

所以,三个和尚的故事对我来说是合适的。可是,如果我不再这样了呢?如果是一个擅长管理的人呢?我想他一定会说:“哇噢,这么多的资源可以用!”

呵呵,谈起这个和尚的问题,就非常有意思。

我的一位技术型的同事,认识到人多可能引起的问题,于是就开始提出一个所谓最合适人数的问题。而我也开始重视这个问题。

  • 如果我是其中一位和尚,怎么办?
  • 如果这三个和尚都是我的手下,怎么办?

赶走一个和尚,是一个非常可能的答案。这个能直接解决协调障碍。在软件开发中,敏捷开发,走得路线和这个有一些异曲同工的感觉。

改变取水方式,也应该是很可行的方案。比如说直接作成自来水。那么,就直接取消了所谓责任推卸的问题。这是我们技术人员最倾向于使用的办法。能用技术解决的,绝对不用管理解决。因为一旦解决了,就不需要再关心了。

找一个协调者,是一个非常现实的方法。但是我不擅长管理,怎么办?请外人协助管理,或者再加入一个管理者。协调将变得简单。可是协调的成本,转换成资源的成本。

上面三个有意思的解决问题的方法,其实都紧紧围绕着我们的处事特点。当然了,也给我们一个启示。找到问题的解决方案,往往不光要关注事情本身,还要关注解决问题的人。这样,方案才变得合理。

一点歪歪之言,大家只当一笑了之!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
和尚打水问题是一个著名的数学问题,可以用Python来解决。 假设有三个和尚和一个水缸,水缸中有N升水。三个和尚分别拿一个空水桶去打水,每个水桶的容积分别为A、B、C升。他们需要合作才能把水桶装满,并且不能浪费水或者将水倒掉。问是否存在一种方案使得三个水桶中都恰好有M升水。 可以使用深度优先搜索(DFS)算法来解决这个问题。具体思路如下: 1. 定义一个数组visited,用于记录已经遍历过的状态。 2. 定义一个函数dfs,表示从当前状态开始,是否能够找到一种方案使得三个水桶中都恰好有M升水。 3. 在dfs函数中,遍历三个水桶之间的所有可能操作,例如将A桶中的水倒入B桶中等等。 4. 对于每一次操作,判断是否已经遍历过该状态,如果没有遍历过,则继续递归搜索。 5. 如果在搜索过程中找到了一种方案使得三个水桶中都恰好有M升水,则返回True,否则返回False。 下面是一个使用Python实现的代码示例: ```python def dfs(a, b, c, visited, m): if a == m or b == m or c == m: return True if (a, b, c) in visited: return False visited.add((a, b, c)) # A倒入B if b < B: if dfs(max(0, a-(B-b)), min(B, a+b), c, visited, m): return True # A倒入C if c < C: if dfs(max(0, a-(C-c)), b, min(C, a+c), visited, m): return True # B倒入A if a < A: if dfs(min(A, a+b), max(0, b-(A-a)), c, visited, m): return True # B倒入C if c < C: if dfs(a, max(0, b-(C-c)), min(C, b+c), visited, m): return True # C倒入A if a < A: if dfs(min(A, a+c), b, max(0, c-(A-a)), visited, m): return True # C倒入B if b < B: if dfs(a, min(B, b+c), max(0, c-(B-b)), visited, m): return True return False A, B, C = 8, 5, 3 N = 8 # 水缸中N升水 M = 4 # 三个桶中都恰好有M升水 visited = set() print(dfs(0, 0, N, visited, M)) ``` 在上述代码中,我们定义了三个变量A、B、C分别表示三个水桶的容积,N表示水缸中的水量,M表示需要找到的三个水桶中都恰好有M升水的方案。我们首先将visited设为空集,然后从(0,0,N)这个状态开始搜索。如果找到了符合条件的方案,则返回True,否则返回False。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值