演算法導論14.3-7

來源:互聯網
上載者:User

  HOHO~~.話說好久沒有長時間地鑽研演算法問題了,這次鑽研了好幾道,寫出來了.感覺非常不錯.而且,網吧旁邊沒有人,想寫什麼就寫什麼,哈哈.

  問題描述是這樣的,一塊電路板,上面鑲嵌電氣元件,涉及到分布問題.因為可能出現兩塊元件出現覆蓋的問題,嗯.這就是問題的基本描述,接下來說下去.理所當然地使用區間樹來解決這個問題,先將輸入塊按照X座標排序,從而得到座標的範圍.只檢查這個範圍就好了.接下來,用一條線從左道右掃描這塊地區,如果遇到塊的左邊,則依據該塊的y座標去區間樹中檢查是否出現重疊.這裡需要說明的是,實現中包含了找出所有覆蓋的塊的方法以及僅找出覆蓋的最左面的塊的方法.具體的問題根據具體需要吧.畢竟是一道演算法問題,沒有大肆進行封裝.呵呵.接著說下去.將這塊的y座標插入分區樹中,無論是否出現重疊;如果,是某個塊的右邊,則從區間樹中刪除這個塊,因為它已經不在當前的考察範圍內了.

  就這樣,進行下去了.思路很清晰,實現的細節不難.

  雖然是C++檔案,我沒有使用多少C++特性.感覺,用C++寫得很舒服.嗯.這一輪的演算法研究之後,就又繼續C++了.如此往複,呵呵.

  總是這樣,寫的時候,琢磨著寫出來之後,說說這,說說那.一旦寫完了,不想說太多了.呵呵.

  貼出來吧.

// Ata14.3-7.cpp -- 2011-06-03-21.24<br />//2011-06-04-13.25 終於完成了.好久沒幹大活了.<br />#include "stdafx.h"<br />#include "block.h"<br />#include <iostream></p><p>int _tmain(int argc, _TCHAR* argv[])<br />{<br />using block :: Block ;<br />using block :: Test ;<br />Block array[3] = {<br />{3, 5, 2, 5, 1},<br />{1, 3, 1, 5, 2},<br />{2, 5, 5, 7, 3}<br />} ;<br />Test test = Test (array, 3, 1) ;<br />test.CalculateAndOutput () ;</p><p>std :: cin.get () ;</p><p>return 0 ;<br />}</p><p>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.