本文介绍的问题是一道来自于二年级(上)数学的练习题。
问题
在下图中画8个
Δ
\Delta
Δ,使每个大圆圈里都有4个
Δ
\Delta
Δ.
示例:
每个大圆圈里面均有4个 Δ \Delta Δ.
方法
按照“变量-范围-条件”的三段式穷举法解题框架,对本问题进行求解。
首先,确定需要定义的变量个数。由于三个大圆圈分割成了五个区域,在这五个区域里面均可以画三角形,因此将这五个区域内三角形的个数设为变量 a , b , c , d , e a,b,c,d,e a,b,c,d,e。
其次,确定每个变量的变化范围。由于每个区域内三角形的个数变化范围是 0 ∼ 8 0\sim8 0∼8,据此可以确定每个变量的范围。
最后,满足题目要求的条件有四项,分别是:
- 第一个圆圈的三角形数量之和是8即 a + b = 4 a+b=4 a+b=4;
- 第二个圆圈的三角形数量之和是8即 b + c + d = 4 b+c+d=4 b+c+d=4;
- 第三个圆圈的三角形数量之和是8即 d + e = 4 d+e=4 d+e=4;
- 所有圆圈的三角形数量之和是8即
a
+
b
+
c
+
d
+
e
=
8
a+b+c+d+e=8
a+b+c+d+e=8.
根据上述三段式解题框架对问题进行分析后,可以得到C++求解程序如下:
#include <iostream>
using namespace std;
int main()
{
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
for(a = 0; a < 5; a++)
for(b = 0; b < 5; b++)
for(c = 0; c < 5; c++)
for(d = 0; d < 5; d++)
for(e = 0; e < 5; e++)
{
if(
(a + b == 4) &&
(b + c + d == 4) &&
(d + e == 4) &&
(a + b + c + d + e == 8)
)
cout<<"a="<<a<<",b="<<b<<",c="<<c<<",d="<<d<<",e="<<e<<endl;
}
return 0;
}
程序运行结果为:
a=0,b=4,c=0,d=0,e=4
a=1,b=3,c=0,d=1,e=3
a=2,b=2,c=0,d=2,e=2
a=3,b=1,c=0,d=3,e=1
a=4,b=0,c=0,d=4,e=0
变量 a , b , c , d , e a,b,c,d,e a,b,c,d,e五个变量的数值即为五个区域要画的三角形数量。
结语
本题的难点在于如何将普通的文字描述问题转化为计算机能够求解的数学问题,这种转化思维即为“计算思维”,计算思维能力的培养需要大量的、长时间的训练方可形成。
本文是“变量-范围-条件”三段式穷举法解题框架的具体应用,如需了解更加的关于该框架求解数学问题的应用案例,欢迎订阅本付费专栏。