可能是表述得不太准确,造成理解上还有点障碍。
箱子有编号,箱子1~10;钥匙有编号,钥匙1~10。
当每1次把所有的钥匙放入箱子后,实际上就已经确定了是否能按要求打开箱子,即是否是“好的方法”。
当然,“好的方法”的具体步骤有多种,差异在先用砸开的箱子1、2里的哪把钥匙,及接下来的开箱顺序。但不管具体步骤如何,只能是1种“好的方法”,因为此时箱子与钥匙的对应方式只有1种。
同样的,“坏的方法”的具体步骤也有多种,差异在先用砸开的箱子1、2里的哪把钥匙,及接下来的开箱顺序。但不管具体步骤如何,只能是1种“坏的方法”,因为此时箱子与钥匙的对应方式也只有1种。
于是就需要找出1种判断过程,用以判定每1次把所有的钥匙放入箱子后是不是1种“好的方法”。选择判断过程就是1个思路的问题,必须满足充分、必要这2个条件,否则就会遗漏或者重复。
俺选择的判断过程是:
第1步,先砸开箱子1,用箱子1里放的钥匙去开别的箱子,一直继续到不能开别的箱子或者打开箱子2为止;
第2步,然后砸开(或者已经打开)箱子2,用箱子2里放的钥匙去开别的箱子,一直继续到不能开别的箱子为止。
这种方式的充要性俺已在前面分析过,不再重复。
在这个过程中,第1步的中止可能有2种原因:得到钥匙1,得到钥匙2;相应的,第2步的中止可能也有2种原因:得到钥匙2,得到钥匙1。只有在第2步中打开最后1个箱子时得到钥匙2,或者得到钥匙1,才能打开所有的10个箱子,即是1种“好的方法”。
接下来就是计算的问题,前面几位老师提出了多种计算方式,值得学习掌握。
在此俺明确一下俺的计算思路:
俺所说的数列,是按照俺选择的判断过程中钥匙出现的顺序排列的。
比如:
数列2、3、4、5、6、7、8、9、10、1,指砸开箱子1,得钥匙2;打开箱子2,得钥匙4;...;打开箱子10,得钥匙1。
数列3、4、5、6、1、7、8、9、10、2,指砸开箱子1,得钥匙3;打开箱子3,得钥匙4;...;打开箱子6,得钥匙1;砸开箱子2,得钥匙7;打开箱子7,得钥匙8;...;打开箱子10,得钥匙2。
可以看出,数列的前9项随便写(不重复、不遗漏),只要最后一项是1或2,就是“好的方法”。
至于类似数列1、2、3、4、5、6、7、8、9、10,
3、4、5、1、6、7、2、8、9、10,
等等是不会出现的,因为这些根本就不是“好的方法”。
有筒子问“如果钥匙5放在箱子5里,咋办?”是的,在开箱子5之前,钥匙1、2肯定都已出现,自然就不是“好的方法”。同样,“如果钥匙5放在箱子4里,钥匙4放在箱子3里,钥匙3放在箱子5里”,同理。
俺只管“好的方法”,“坏的方法”就随它去了。
.