分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
发布时间:2016-12-30 来源:查字典编辑
摘要:复制代码代码如下:题:有n个直线最多可以把一个平面分成多少个部分线条数:内交点:分割数:functioncalculate(line){va...

复制代码 代码如下:

<html>

题:<br />

有n个直线最多可以把一个平面分成多少个部分<br /><br />

线条数:<input type="text" id="line"/><br />

内交点:<label id="innerPoint"></label><br />

分割数:<label id="part"></label><br />

<input type="button" value="计算"/>

</html>

<script type="text/javascript">

function calculate(line)

{

var line = document.getElementById('line').value;

if(line == "")

{

line = 0;

document.getElementById('line').value = line;

}

var line = parseInt(line);

var innerPoint = line * (line -1) / 2;

var part = (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

51010 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=2 3*2=6 4*3=12...正好是内交点个数的2倍

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类