題目描述:
數軸上從左到右有n個點,a[0] ,a[1],…,a[n-1],給定一根長度為l繩子,求繩子最多覆蓋其中幾個點?
以下面的陣列為例子,如果繩子長度為4,那麼最多覆蓋的點數應該是568這三個點
int a[5] = ;
把繩子想成一條蛇。如果長度小於4,那麼就頭一直增長,增長到4的話,就把尾部收短一些,之後就是頭伸一下,尾巴縮一下的挪動。每次比較這裡面有幾個覆蓋的點取最大的那個。
#include#includeusing namespace std;
int line(int a, int n, int len);
int main()
; cout << line(a, 5, 4);
return 0;
}int line(int a, int n, int len)
else
rear++;
} return maxnum + 1;
}
定長線段最多覆蓋點的個數
給定一系列x軸的點座標,例如 1,3,7,8,9,11這些座標公升序放在陣列中,現在給一根繩子,長度為4,問繩子最多能覆蓋的點數有多少,例如繩子放前面只能覆蓋兩個點,1,3,如果放後面能覆蓋4個點。題目不難,但也不是太容易想出來,兩個指標前後跑的思路 兩個指標往前走,前面的負責加,後面的負責減,前面...
繩子可以覆蓋的最多點數
有指出,我的演算法其實沒必要申請多餘的陣列,那麼有沒有更加高效的演算法呢,我身邊的乙個大神給了我乙個o n 複雜度的演算法 他的原話 兩個指標,乙個front,乙個rear,每次front rear,比l小,看覆蓋的點數。儲存覆蓋點數的最大值,然後front 比l大,rear 每個數最多遍歷2遍,複...
POJ 1981 定長圓覆蓋最多點
題意 一些點,求乙個單位圓最多能覆蓋的點的個數,不存在兩點距離恰好為2.題解 暴力列舉兩個點,求圓心,然後列舉每個點驗證是否在圓內。n 3的,可以過 當然還有n 2logn的轉化為求圓的最大弧的覆蓋次數問題 以後做ciru 的時候也會用到這個技術 n 3view code 1 include 2 i...