众所周知,每个学期都会有一个单元“解决问题的策略”。而在此文章,我们会把小学阶段所有策略都进行一一讲解。
每个年级的两个学期中的策略,其实有异曲同工之处。
- 三年级:从条件和问题出发解决问题
- 四年级:用图表整理信息
- 五年级:通过转化筛选来优化枚举
- 六年级:通过假设筛选来优化枚举
从不同角度解决问题【三年级】
三年级上册的思考方式是“从条件出发解决问题”,而三年级下册的思考方式是“从问题出发解决问题”,同时也贯穿了四年级上册的“多种方式解决问题”。
小猴帮妈妈摘桃,第一天摘了30个,以后每天都比前一天多摘五个。小猴第三天摘了几个?第五天呢?
为了与将两种极度相似的思考方式区分开,我画了两个图。
这是从条件出发所画出的逻辑图。以“第一天摘的桃子数量”作为整个问题的出发点。
这是从问题出发所画出的逻辑图。以“第五天摘的桃子数量”作为整个问题的出发点。
在这两种出发点中,思路或许有一些不同,但最后的算式基本是相同的。不同的人,思维方式或许有些不同,就像我喜欢从问题出发解决问题,但是还可能有人喜欢从条件出发解决问题。只要适合自己,那么这个思考方式就是好的。由于这个思路是所有应用题的基础,这一部分的理解深度决定高年级能不能学好。这就是四年级上册的关键。(由于这部分太基础了,甚至都不知道该说什么)
从条件出发思考问题要点:
要弄清题中每个条件的含义,看清楚要求的问题。
可以从条件想起,确定先算什么,再算什么。
可以列式计算,也可以列表找出答案。
从问题出发思考问题要点:
可以从问题开始想,根据问题分析数量关系,确定先算什么。
要根据题目中的条件和问题,选择分析问题的思路。
从多种角度出发思考问题要点:
先要弄清题意,明确已知条件和所求问题。
再分析数量关系,确定先算什么,后算什么。
算出答案,还要进行检验和反思。
可以从条件想起,也可以从问题想起。
可以通过列表、画线段图等方式进行分析。
可以利用数量之间的关系,用多种方法解题。
整理信息【四上】
在前面我讲过四年级上的思维方式是“多种角度解决问题”,但在我的印象中,还有一个非常费笔的事情:“整理信息”。
虽然它在课本中并没有提到很多,但是它在考试中的出现率非常高。要说窍门,也没什么窍门。整理信息有三步:
第一步、认真审题。
这一步审题可不只是简单的看一眼题,而是要清楚题目中的数量关系,每个数据对应的量分清楚。
第二步、看表
这一步的表也可能只是某种格式。如果需要文字描述,那么就要根据题目给出的例句来进行填写。而填表则需要看清楚表头,第一排,第一列,清楚每个数据应该填在哪里。
第三部、填写
这一步是在前两步的基础之上进行的,也是最终结果。
画图解决问题【四下】
画图的主要用途是整理信息与分析关系,让条件更直观。在普通的数量关系问题中,可以画线段图。
线段图的标注说明如下:
- 虚线分割+实线=多多少
- 虚线分割+虚线=少多少
- 右边直且向左括号=括号内数量之和
而在与图形有关的题目时,可以画示意图,把题目中的信息都标注出来,更容易思考。画图是一种最基本的能力,在小学阶段的应用范围非常多。我在遇到不懂的题目时,就会选择画图的策略。
画线段图的主要优点:
画线段图能使数量关系更直观、更清楚。
看线段图分析数量关系,容易找到解题方法。
把得数带入原题检验,要符合所有已知条件。
画示意图的体会:
要根据题目条件和信息逐步画出示意图。
要把题目的条件和问题都在示意图中标注清楚。
观察示意图可以清楚地看出数量之间的关系。
有序枚举【五上】
枚举是一个简单粗暴的策略。
其实大部分题目其实可以不用枚举法,用更高层次的方法可以解决。例如汽车发车问题,是公因数与公倍数的变体。
但是偏偏就有一些叼毛题目,只有枚举才可以解决。这里暂且不说需要把每种情况都要列举出来的题目。这里我以编程的角度说,一般的枚举题目,只需要双重循环,甚至时间复杂度可以降到O(n)甚至O(logn)的,就是简单枚举。但是有些题目,像深度优先搜索,广度优先搜索,它就有了一个更高级的名字:回溯算法。
简单枚举
在小学阶段,基本都是两个基数的枚举。我在02 排列与组合这篇文章中写到过,多个量的关系,“任选其一”或“并列”关系,用加法原理。“缺一不可”或“因果”关系,用乘法原理。固定一个基数,将另一个基数枚举,就得到了固定的这个基数的所有情况,以此类推。
列举时,可以列表,也可以画图。
可以根据问题的特点,选择合适的列举方法。
列举出全部结果后,要进行检查。
回溯算法
以深度优先搜索为例。深度优先搜索简称为dfs。无论是深度优先搜索,还是广度优先搜索,他们都需要“递归”这个中心思想。回溯就是递归,只要有递归就会有回溯。深度优先搜索可能会用于二叉树的搜索,在这个过程中,循环层数非常多,它已经脱离了简单枚举。
对于不会编程(例如我的同学),我可以用简单的语言描述。回溯算法只是暴力搜索,并不是什么高明的方法。
回溯算法能解决如下问题:
组合问题:N个数里面按一定规则找出k个数的集合
排列问题:N个数按一定规则全排列,有几种排列方式
切割问题:一个字符串按一定规则有几种切割方式
子集问题:一个N个数的集合里有多少符合条件的子集
棋盘问题:N皇后,解数独等等
这是回溯算法的伪代码。
//一定要分成横纵两个方面思考回溯
void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {//注意i=0,i=start的区别处理节点;backtracking(路径,选择列表); // 递归 注意(i)和(i++)的区别 后面会懂回溯,撤销处理结果}
}
想要优化回溯算法只有剪枝一个方法。但是这篇文章并不想往下继续讲,因此回溯算法的介绍到此完成,知道就行了。
转化思维【五下】
转化思维是一个很辽阔的话题,但是在此对五年级下册所针对的两个主要转化题型作分解。
图形转化
对于有弧线的图形,往往需要转化。转化思维并不难,但是由于在它前一个单元学了“圆”,导致出现了曲线图形,也就需要转化。曲线图形转化的难度自然比非曲线图形要难得多。在转化的时候,有一个重点:弧线相同则可以拼接。只要能够证明这两弧线相同,就可以连到一起。
有些不规则的复杂图形可以转化成学过的熟悉图形。
图形转化时可以利用平移、旋转等方法。
转化后的图形和转化前的图形相比,形状变了,大小没有变。
特殊分式转化
这类的分式必须非常巧。一定要是分母相同,分子的比例为1:2的,才可以。
让我们再借用一下课本中的图片。将大正方形设为单位1,每个图形的面积都在逐步除以2。这是因为他们之间的比例是1:2的缘故。而最后缺失的面积,就是最小图形的面积。但对于其他比例是否也会有同样的结果,我还有待探究。
有些复杂的算式可以转化成简单的算式。
有时画图可以帮助我们找到转化的方法。
有序假设【六上】
在假设法这一单元,我们直接用课本上一些具有代表性的题目来讲解。比如说六上课本第七十一页 练一练第一题,我们可以从问题和条件两个角度出发思考问题。
从问题出发思考问题
原问题:
上衣多少钱?
转化为:
假设买的全部都是裤子,需要多少钱?
裤子是多少钱?
假设的情况,与原情况相比有什么变化?
假设此情况之后问题变方便了吗?
从条件出发思考问题
上衣与裤子有什么关系?
如果全部买裤子,会发生什么变化?
如果这么买,会和原问题有什么出入?
假设后会变方便吗?
假设思维总结
我们可以发现,从条件和从问题出发都差不多,不过是顺序发生了一点变化。
这样子思考,我们就可以得出转化前与转化后的优劣以及钱数。
【重点】:假设多与转化思维共同出现,要仔细思考情况发生的变化。
之所以需要假设与转换,就是因为原情况过于复杂。当然,直接算出上衣的钱再相加也是可行的。
【重点】:参与多个量的假设往往有多种假设方法。
之前我们使用过的假设
- 在简便计算99×28时,凑整转换为(100-1)×28
- 已知两个数的和与差,假设这两数相等,分别求出两个数。
- 假定未知数为x,列方程计算
由此可见,假设法的用处很多。
通过假设可以转化问题,使数量关系关系变得简单。
假设时要搞清楚数量之间的关系。
假设时也可以用字母表示未知量,用方程解答。
弄清假设前后的数量关系,注意总量是否有变化。
要在不同的假设方法中选择较简单的。
更清晰地理解题目【六下】
这单元的主要考点是倍比法。对于这一单元,与【五下】的转化思维有相似之处。严格来说,倍比法就是通过转化思维来实现的。这是例一的考点。
但是例二的考点似乎就是【五上】的枚举法了。但这两个例子有异曲同工之处:用了画图的策略。这也和我三年级时分析的一样:六下注重于画图,并且更清晰地理解问题。
“把一个问题清楚地描述出来,这个问题就已经解决了一半。”清晰地理解问题,正是画图法的精髓。因为这点在之前的策略中有讲到过,(参见 画图解决问题【四下】)所以这里就不过多描述了。
文尾
小学的策略正如上文所说,但其实都绕着几个东西转“不同角度解决问题”“转化法”“画图解决问题”。这些在奥数中,必然是非常重要的思想。