DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> 分享一道筆試題[有n個直線最多可以把一個平面分成多少個部分]
分享一道筆試題[有n個直線最多可以把一個平面分成多少個部分]
編輯:關於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倍 

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved