zl程序教程

您现在的位置是:首页 >  其它

当前栏目

分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]

一个 分享 可以 多少 部分 笔试 一道 平面
2023-06-13 09:14:36 时间
复制代码代码如下:

<html>
题:<br/>
有n个直线最多可以把一个平面分成多少个部分<br/><br/>
线条数:<inputtype="text"id="line"/><br/>
内交点:<labelid="innerPoint"></label><br/>
分割数:<labelid="part"style="background:yellow;"></label><br/>
<inputtype="button"onclick="calculate()"value="计算"/>
</html>
<scripttype="text/javascript">
functioncalculate(line)
{
varline=document.getElementById("line").value;
if(line=="")
{
line=0;
document.getElementById("line").value=line;
}
varline=parseInt(line);
varinnerPoint=line*(line-1)/2;
varpart=(Math.pow(line,2)+line)/2+1;//line+innerPoint+1等于(线条数的平方+线条数)/2+1

document.getElementById("innerPoint").innerText=innerPoint;
document.getElementById("part").innerText=part;
}
</script>

说一下规律:

①最多分成的部分:线条数+内交点数+1

②内交点数=(线条数-1)的内交点数+(线条数-1),新添加的线条可以会与除他之外的线条有交点

③用递归求出内交点数,然后代入①计算

上面是正常的数学思维,下面说说我用的行测知识,就是我代码的东东

我列出了1~5条直线一些可用的参数:

直线数  内交点  外交点  部分数

1     0     2     2

2     1     4      4

3     3     6     7

4     6     8     11

5     10    10    16

发现,外交点是没有意义的,反正都是直线数的2倍

而部分数=直线数+内交点数+1

相邻直线个数内交点个数组成一个等差数列,这个等差数列公差为1, 1-0=1,3-1=2,6-3=3,10-6=4,横向看1+0=1,2+1=3,3+3=6...但是这样还是用到了递归要求出上一个对应的内交点个数,于是纵向看规律,2*1=23*2=64*3=12...正好是内交点个数的2倍