分享一道筆試題[有n個直線最多可以把一個平面分成多少個部分]
<html>
題:<br />
有n個直線最多可以把一個平面分成多少個部分<br /><br />
線條數(shù):<input type="text" id="line"/><br />
內(nèi)交點:<label id="innerPoint"></label><br />
分割數(shù):<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等于(線條數(shù)的平方+線條數(shù))/2 + 1
document.getElementById('innerPoint').innerText = innerPoint;
document.getElementById('part').innerText = part;
}
</script>
說一下規(guī)律:
①最多分成的部分:線條數(shù)+內(nèi)交點數(shù)+1
②內(nèi)交點數(shù)=(線條數(shù)-1)的內(nèi)交點數(shù)+(線條數(shù)-1),新添加的線條可以會與除他之外的線條有交點
③用遞歸求出內(nèi)交點數(shù),然后代入①計算
上面是正常的數(shù)學(xué)思維,下面說說我用的行測知識,就是我代碼的東東
我列出了1~5條直線一些可用的參數(shù):
直線數(shù) 內(nèi)交點 外交點 部分?jǐn)?shù)
1 0 2 2
2 1 4 4
3 3 6 7
4 6 8 11
5 10 10 16
發(fā)現(xiàn),外交點是沒有意義的,反正都是直線數(shù)的2倍
而部分?jǐn)?shù)=直線數(shù)+內(nèi)交點數(shù)+1
相鄰直線個數(shù)內(nèi)交點個數(shù)組成一個等差數(shù)列,這個等差數(shù)列公差為1, 1-0=1,3-1=2,6-3=3,10-6=4, 橫向看1+0=1,2+1=3,3+3=6...但是這樣還是用到了遞歸要求出上一個對應(yīng)的內(nèi)交點個數(shù),于是縱向看規(guī)律,2*1=2 3*2=6 4*3=12...正好是內(nèi)交點個數(shù)的2倍
相關(guān)文章
JavaScript 解決ajax中parsererror錯誤案例詳解
這篇文章主要介紹了JavaScript 解決ajax中parsererror錯誤案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
JavaScript trim 去除字符串空格的三種方法(附代碼詳解)
個人認(rèn)為最好的方法.采用的是正則表達(dá)式,這是最核心的原理.因為空格有多種形式。2010-05-05
Bootstrap基本組件學(xué)習(xí)筆記之下拉菜單(7)
這篇文章主要為大家詳細(xì)介紹了Bootstrap基本組件學(xué)習(xí)筆記之下拉菜單,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12
Bootstrap幻燈片輪播圖支持觸屏左右手勢滑動的實現(xiàn)方法
最近在研究用bootstrap搭建網(wǎng)站,Bootstrap能自適應(yīng)pc端和手機(jī)端,并且移動設(shè)備優(yōu)先,適合現(xiàn)如今移動營銷,大家用的設(shè)備基本是觸屏的了,能用滑動交互在小屏幕上體驗會更好,那么如何實現(xiàn)呢?下面小編給大家介紹下bootstrap 手勢滑動輪播圖的實現(xiàn)方法2016-10-10

