这道题需要空间想象能力,一个60x100的长方形。。。
2020/09/25
原题如下:
一个60x100的长方形,全部由1x1的小正方形组成,从长方形的一个角到其对角划一条直线,问,这条直线穿过了多少个正方形。穿过的定义是指直线从正方形内部穿过。如下图这样。
解析:
求直线穿过正方形的数量,我们不要画出来去数,这样很费时间,对建立解题思路也没有什么启发性。
先想想一个简单的问题:
直线穿过1个正方形,会有几个交点。
必然有2个交点,因为如果只有1个交点,就是擦边而过,不是穿过。如有3个交点,那不是直线能做的事。
那么反过来考虑,根据交点数是否可以计算出穿过的正方形数。
像下面这个例子,红色的对角线穿过了2条垂直线,1条水平线,总共有3个交点
中间这些交点属于两个相邻的正方形共有,在统计时我们要*2
那么加上两个顶角的交点,
2+3*2=8
穿过的正方形数:
8/2=4
如果是这种情况,直线穿过了一个小正方形的顶点
红色的对角线穿过了2条垂直线,1条水平线,总共有3个交点
但其中有两个交点重叠了(即正方形顶点),在统计时需要减去
内部总共的交点数:
3-1=2
穿过的正方形数:
(2+2*2)/2=3
这种思路应该是可以的。
也可这么想,数数看直线被分成几段了,这个跟穿过正方形数是一样的。
我们这次决定尝试一下数交点数的方法。
60X100的长方形,内部总共有99条垂线和59条横线,
对角的直线都会穿过这些垂线、横线
总共交点有 99 + 59个
注意,这里面有没有小正方形的顶点?
假设最左上角的顶点为(0,0),最右下角顶点编号为(60,100)
这些编号的顶点都会被直线穿过(只考虑长方形内部)
(3,5)(6,10)(9,15)。。。直到(57,95)
总共有19个点
所以内部的交点 99 + 59 – 19 =139个
那19个顶点重复统计了2次。
穿过的正方形数有
(2+139*2)/2 = 140 (个)
解毕
点评:
对于无法入手的问题,我们可以尝试把问题简化为一个规模不那么大的情形,进行分析和探讨,或者回想一下,是否有做过类似的问题,从简单入手,找出方案。进一步推而广之,向目标问题靠近。
这道题还有几个相对复杂的升级版本,一起来看看。
问题1:
一个10x10x10的大正方体,由1000个单位为1的小正方体组成,一个钢丝从正方体一面穿入从另一面穿出,问,最多能穿过多少个小正方体。
解析:
直线每穿过一个小正方体,最多穿过其两个不同的面,如果从棱线或顶角穿入穿出,那么会相应减少所穿过的面的数量。
为简化问题,我们假设直线全部从面上穿过,即不经过棱或顶点。
那么在正方体内部直线穿过的面有:
前后共9个,左右共9个,上下共9个
一共27个,这些面为两个小正方体共有,在统计时要*2
加上外部的2个面(一进一出)
穿过小正方体最多有(每个小正方体提供2个面):
(27*2+2)/2=28个
问题2:
小长方体尺寸为1*2*3,共有36块小长方体组成一个6*6*6的大正方体,如下图,问:其对角线CE穿过了几个小长方体。
解析:
这道问题更复杂一点,它规定了直线的路径,我们必须要考虑内部是否穿过长方体的棱边,或者顶点。可是对角线在正方体内部,不像上面的题,可以在平面上把图形画出来讨论。我们要通过想象力,建立立体模型,这是这道题的难点所在。
先考虑CE这条线在哪几个切面上?这里切面指把正方体切开后展示出来的面。
CE在这几个面上:
DCEF、EBCH、ACGE
而不在DBFH上
如果CE所在的切面穿过了长方体的棱线,那么CE也必然穿过此棱线。
关于上面这一点,不那么显而易见,但仔细考虑后应该能明白。
现在来进行计算。
对角线CE穿过的面有:
前后2个,上下5个,左右1个,共8个
考虑内部穿过的棱线有3条(具体如图示),
穿过一条棱,等价于同时穿过了两个面,
穿过一个顶角,等价于同时穿过了三个面(这里没有穿过顶角的情况)
在统计面时应该减掉过棱的次数,所以穿过的小长方体数有:
((2+5+1-3)*2+2)/2 =6个
如果我们第一次碰到的就是最后这一道题,不一定能分析出结论。
但是,如果我们从最简单的平面分析开始,
一步一步往下走,走到最后的结论应该不难,至少是有考虑的方向了。
这应该就是我们常说的数学解题思维吧。