1.题目:
求问在以下图案的大三角形内部添加五条直线最多可以将大三角形分成多少个区域。
例如下图一共有 7 个区域。
请在下图的基础上添加五条直线。
2.解法:
有关数学几何
公式如下,但不能直接使用,具体情况具体分析
规律:f(n)=f(n-1)+n
公式:f(n)=n*(n+1)/2+1
我们先算几个来推一下
f(1) = 1*2/2+1 = 2 <—意味着—>一条直线将1块七巧板最多切割成2块七巧板
f(2) = 2*3/2+1 = 4 <—意味着—>两条直线将1块七巧板最多切割成4块七巧板
f(3) = 3*4/2+1 = 7 <—意味着—>三条直线将1块七巧板最多切割成7块七巧板
找规律
由上面可以得出:
第一条直线穿过了1块七巧板,最终得到2块七巧板
第二条直线穿过了2块七巧板,最终得到4块七巧板
第三条直线穿过了3块七巧板,最终得到7块七巧板
总结:
下一次直线穿过的七巧板块数比上一次穿过的多1,且穿过了几块七巧板就多了几块,简单的说穿过几块就多几块。如:第三条直线穿过了3块,就多三块,4+3 = 7
3.此题分析:
这道题我们可以发现,里面一共有6条直线,用公式计算的话,6条直线最多可以将一块七巧板切割成
f(6) = 6*7/2+1 = 23块七巧板,但是题目中只有7块七巧板,不够23块,所以下一次切割就不能直接用公式
我们可以推导一下
题目要求放5条直线
第一条直线最多穿过6个区域,如下图
根据上面2的总结:下一次直线穿过的七巧板块数比上一次穿过的块数多1
所以第二条直线穿过的块数为6+1=7
我们可以发现只要穿过几块七巧板就是多了几块,比如穿过了6块七巧板就多了6块,穿过了7块七巧板就多了7块
所以以此类推
我们就可以写代码了
4.代码实例:
public class Main{
public static void main(String[] args) {
int a = 7;//代表一开始有7个区域
int b = 6;//代表第一次最多穿过6个区域
for (int i = 1; i <= 5; i++) {//切5次
a += b++;//每切一次就是原来的a加上穿过的区域数,因为穿过几个就多几个区域
}
System.out.println(a);
}
}