曾经在一本书上看到过一个铺瓷砖问题,大意是: 能否用1 2的瓷砖覆盖N M的地板? 书上给出了解答: 1. 如果N=1,M为偶数,显然1 2的瓷砖可以覆盖N M的地板。 2. 如果N M为奇数,即N和M都为奇数,则肯定不能用1 2的瓷砖去覆盖。( N M不被1 2=2整除) 3. 如果N和M中至少有一个偶数,不妨设M为偶数,那么既然可以用1 2的瓷砖覆盖1 M的地板,也就可以简单地重复N次覆盖1 M地板的做法,就可以覆盖N M的地板。 结论:若N和M中有一个是偶数,则可以覆盖,反之不能。 这道题目是十分简单的,只要有一些最基本的数论知识就能够答出来,但是我觉得,只解答这么一道简单的问题,是不够的,还要考虑一下它的推广。 推广1:能否用1 p的瓷砖覆盖N M的地板? 这个题目还是比较简单,答案几乎只要套用一下上面的格式就可以了: 1. 如果N=1,M被p整除,显然1 p的瓷砖可以覆盖N M的地板。 2. 如果N M不被p整除,即N和M都不被p整除,则肯定不能用1 p的瓷砖去覆盖。( N M不被1 p整除) 3. 如果N和M中至少有一个被p整除,不妨设M被p整除,那么既然可以用1 p的瓷砖覆盖1 M的地板,也就可以简单地重复N次覆盖1 M地板的做法,就可以覆盖N M的地板。 结论:当N和M中至少有1个被p整除时,可以覆盖,反之不能。 这样推广还是很简单的,那么再看一下更加一般的情形。 推广2:能否用p q的瓷砖覆盖N M的地板(我们假定N和M都大于p和q)? 这样一推广,答案就不能照搬了,但是可以轻易看出的是:如果N M不被p q整除,那么是肯定不能覆盖的。那么,是否当NM被pq整除的时候,都可以覆盖呢? 这时有两种情形: 一、 N和M中有一个被p整除(不妨设为N),而另一个被q整除。 1. 如果N=p,M被q整除,显然可以用p q的瓷砖覆盖N M的地板。 2. 如果N=pk(k为整数),M被q整除,那么既然可以用p q的瓷砖覆盖p M的地板,也就可以重复k次这样的铺法,就可以用p q的瓷砖覆盖N M的地板。 所以在这种情况时,可以用p q的瓷砖覆盖N M的地板。 二、 N和M中有一个数被[p,q]整除(不妨设为N)且NM被pq整除。 这时候,并不总是能完全覆盖。 可以简单地举出几个反例来: P Q N M 3 3 9 8 3 5 15 7 3 7 21 11 10 14 70 26 …… …… …… …… 反例还有无数个,就不用再多举几个例子了。 经过仔细观察之后,发现在这几组数据中,M都不能表示成ap+bq(a,b N)的形式。 我们可以证明:如果N被[p,q]整除且M能够表示成ap+bq的形式,那么是可以覆盖的。 1. 如果N=[p,q],且M=p或q,则易知可以覆盖。 2. 如果N=k[p,q],且M=p或q,重复k次步骤1,也可以覆盖。 3. 如果N=k[p,q],且M=ap+bq,重复a次步骤2,再重复b次步骤2,也可以覆盖。 但是当N被[p,q]整除,但是M不能表示成ap+bq的形式时,是不是一定就不能覆盖呢?刚开始时,我为这个问题迷惑了很久,然而想了一下,就发现了证明: 如果能覆盖,则长为M的一条边必被p1条长为p的边和q1条长为q的边覆盖,这样M=p1p+q1p,但是已知M不能表示为ap+bq的形式,所以不能覆盖。 结论:当N和M中有一个是p的倍数,另一个是q的倍数时,或NM被pq整除,N和M中有一个是[p,q]的倍数,另一个能够表示为ap+bq时,可以覆盖;当NM不被pq整除时,或NM被pq整除,N和M中有一个是[p,q]的倍数,另一个不能表示为ap+bq时,不能覆盖。 推广1和推广2都是从数据的范围来推广,我们还可以用另外一种方式来推广。 推广3:求用1 2的瓷砖覆盖2 M的地板有几种方式? 这样的问题还是比较简单的。我在搞信息竞赛的时候遇到过很多次这种题,对解答也是耳熟能详: 设用1 2的瓷砖覆盖2 M的地板有F(M)种方式。通过简单分析,我们可以知道,第一块瓷砖的放法,必定是竖着放,或横着放。 当第一块瓷砖竖着放时,问题转化成求用1 2的瓷砖覆盖剩下的2 (M-1)的方式种数,即F(M-1)。 当第一块瓷砖横着放时,必有另一块瓷砖放在其下方,问题转化成求用1 2的瓷砖覆盖剩下的2 (M-2)的方式种数,即F(M-2)。 总结起来,就是F(M)=F(M-1)+F(M-2)。 再考虑一下边界值F(1)=1,F(2)=2,发现这就是一个斐波那契数列,我们可以直接用式子写出来。 结论: 。 接下来依然是增加数据范围来推广。 推广4:求用1 p的瓷砖覆盖p M的地板有几种方式? 这样的推广,还是难不倒人的。 设用1 p的瓷砖覆盖p M的地板有F(M)种方式。通过简单分析,我们可以知道,第一块瓷砖的放法,必定是竖着放,或横着放。 当第一块瓷砖竖着放时,问题转化成求用1 p的瓷砖覆盖剩下的p (M-1)的方式种数,即F(M-1)。 当第一块瓷砖横着放(不论放在哪一行)时,必有(M-1)块瓷砖放在其下方,问题转化成求用1 p的瓷砖覆盖剩下的p (M-p)的方式种数,即F(M-p)。 总结起来,就是F(M)=F(M-1)+F(M-p)。 边界值:F(1)=1,F(2)=1,……,F(p-1)=1。 这样就容易算了。 结论:F(1)=1,F(2)=1……,F(p-1)=1,F(M)=F(M-1)+F(M-p)。 上面的几个推广,我都尽力去解答它们,而下面的几个推广,我就是身不能至,心向往之了: 推广5:用p q的瓷砖覆盖N M的地板有多少方式? 推广可以考虑图形的形状。 推广6:给定任意形状的瓷砖和地板,问能不能用瓷砖去覆盖地板? 推广7:给定任意形状的瓷砖和地板,用瓷砖去覆盖地板有多少种方式? 推广也可以增加维数。 推广8:在k维空间中,p1 p2 …… pk的k维立方体瓷砖能否覆盖N1 N2 …… Nk的k维立方体地板? 推广9:在k维空间中,用p1 p2 …… pk的k维立方体瓷砖覆盖N1 N2 …… Nk的k维立方体地板有多少种方式? 如果图形是高维数且任意形状,那么题目的难度对于我们来说就不可想象了: 推广10:在k维空间中,用一个k维任意形状的瓷砖覆盖一个k维任意形状的地板有多少种方式?
二聚物问题与组合数学
最新推荐文章于 2020-10-16 14:56:14 发布