欢迎来到代码驿站!

JavaScript代码

当前位置:首页 > 网页前端 > JavaScript代码

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

时间:2021-03-18 09:45:35|栏目:JavaScript代码|点击:
复制代码 代码如下:

<html>
题:<br />
有n个直线最多可以把一个平面分成多少个部分<br /><br />
线条数:<input type="text" id="line"/><br />
内交点:<label id="innerPoint"></label><br />
分割数:<label id="part" style="background:yellow;"></label><br />
<input type="button" onclick="calculate()" 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

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

上一篇:js动态为代码着色显示行号

栏    目:JavaScript代码

下一篇:bootstrap按钮插件(Button)使用方法解析

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

本文地址:http://www.codeinn.net/misctech/83112.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有