圓形劃分區域(空間)

2022-08-20 17:24:11 字數 674 閱讀 8426

一道阿里的筆試題目(大意):乙個平面空間內,使用乙個圓形將空間劃分,例如乙個圓形將空間劃分為兩個區域(包括圓外面的),兩個圓形最多可以劃分4個區域;三個圓最多可以劃分8個,4個圓可最多劃分14個;。。。。。

一開始,思路:由新增的圓去切割現有的區域,考慮如何才可以切割最多區域。但是,當區域成倍的增加,圖形過於複雜,攪亂思路;忽想程式設計之美的一道題目「光線切割區域」的思路;

考慮其相交的點入手。

首先考慮兩個圓最多只能有兩個交點;

假設現有 n-1個圓,區域數為 f(n-1);

現在填多乙個圓進去,那麼這個圓最多和所有的(n-1個)圓最多就有2*(n-1)個交點,即是說:

這個圓被2*(n-1)個交點分成了2*(n-1)段弧;關鍵就在這裡,每一段弧就意味在其將某個空間一分為二;

這樣,新添了這個圓之後將會在之前的基礎上新增了2*(n-1)個區域;即f(n) = f(n-1) + 2*(n-1);

考慮邊界條件,得:

f(n) = {  2  ;        n=1

{  f(n-1)+ 2*(n-1);   n=2,3,4...

化簡一下(化為一般式):

f(n) = n^2 -n + 2;

場景劃分區域

為何要對場景進行區域劃分,這個同樣是為了優化碰撞檢測。因為相對於其他邏輯而言碰撞檢測尤其消耗效能,尤其是對網格類的碰撞體進行碰撞檢測時效能開銷更大。試想一下場景中有1000個物體 如果沒有區域劃分的情況,物體兩兩碰撞檢測的次數是 1000 1000次,而如果遊戲幀率達到60,那麼這個碰撞檢測邏輯就達...

leetcode 由斜槓劃分區域

在由 1 x 1 方格組成的 n x n 網格 grid 中,每個 1 x 1 方塊由 或空格構成。這些字元會將方塊劃分為一些共邊的區域。請注意,反斜槓字元是轉義的,因此 用 表示。返回區域的數目。示例 1 輸入 輸出 2 解釋 2x2 網格如下 示例 2 輸入 輸出 1 解釋 2x2 網格如下 示...

959 由斜槓劃分區域

在由 1 x 1 方格組成的 n x n 網格 grid 中,每個 1 x 1 方塊由 或空格構成。這些字元會將方塊劃分為一些共邊的區域。返回區域的數目。思路 首先需要思考題目轉換,這是求連通塊個數的題目。因為是連通塊個數問題,所以用並查集解決。然後就只要考慮幾個問題就好了 1.最小單位應該是多大?...