定長線段最多覆蓋點的個數

2021-07-04 23:58:01 字數 816 閱讀 3902



給定一系列x軸的點座標,例如 1,3,7,8,9,11這些座標公升序放在陣列中,現在給一根繩子,長度為4,問繩子最多能覆蓋的點數有多少,例如繩子放前面只能覆蓋兩個點,1,3,如果放後面能覆蓋4個點。

題目不難,但也不是太容易想出來,兩個指標前後跑的思路:兩個指標往前走,前面的負責加,後面的負責減,前面的每次都移動,如果點間隔長度大於繩子長度,後面指標移動。

**如下:

#include using namespace std;

#define arraymax 100

/* input:

* pointnumber, segmentlength

* the points

* output:

* the most number of cover points

* input:

* 6 4

* 1 3 7 8 9 11

* output:

* 4*//* 計算線段最多覆蓋點數 */

int calculatenum(int * arr, int pointnum, int seglen)

covermax = (rearptr-frontptr+1) > covermax ? (rearptr-frontptr+1) : covermax;

++rearptr;

} return covermax;

}void main()

printf("%d\n",calculatenum(pointarray,pointnum,seglen));

}

定長繩子最多覆蓋點

題目描述 數軸上從左到右有n個點,a 0 a 1 a n 1 給定一根長度為l繩子,求繩子最多覆蓋其中幾個點?以下面的陣列為例子,如果繩子長度為4,那麼最多覆蓋的點數應該是568這三個點 int a 5 把繩子想成一條蛇。如果長度小於4,那麼就頭一直增長,增長到4的話,就把尾部收短一些,之後就是頭伸...

How many times(最多圓覆蓋的點)

原題 題意 給出n個圓,求某個點使得被覆蓋的圓數量最多。解析 模擬退火過不了,可以參考一下 先二分答案k kk,然後對於答案去跑模擬退火,在計算總距離的時候,只拿出最近的k kk個點的距離和 圓內則為0 那麼這個時候退火就會往更多的點去跑。本地跑的話,大資料都沒有問題,應該是對的,但是套個二分時間複...

覆蓋最多的直線上的點

題庫建設。已知x1,x2,x3,xn是直線上的點,現希望用固定長度固定數量的木條去覆蓋這些點,請編寫程式求最多能夠覆蓋多少點?輸入要求 輸入的第1行為三個整數n,m,k,分別表示直線上點的個數,木條的長度以及數量。輸入的第2行有n個整數,表示座標上的點。輸出要求 輸出1行,為最多能夠覆蓋的點的個數。...