經典的演算法題目 一

2022-07-04 14:06:15 字數 829 閱讀 2869

這系列文章主要記錄遇到的一些比較經典的演算法題目,不斷更新。

1、二分演算法求多邊形外接圓的最大半徑。

題目要求:

給出n個線段長度,試將它們頭尾相接組合成乙個凸多邊形,使凸多邊形的外接圓(多邊形每個頂點都在圓上)的半徑最大,求該最大半徑。其中n<=10^5,線段長度均不超過100,要求演算法中不涉及座標的計算。

思路:二分演算法的的本質就是通過不斷迭代使left 和 right 在固定條件下逐漸靠近真實值,符合一定誤差,本題可以固定條件取為:凸多邊形的外接圓的弧度為2π

1 #include23/*

*4* 求弧度5*

*/67double gettotalradian(double edges,int n,doubler)8

1415

16/**17

* 二分查詢求最大半徑

18*/

19void

maxr()

2038

39//

若最長邊為直徑,則直接處理

40 radian = gettotalradian(edges,n,maxedge/2

);41

if(abs(radian-pi*2)4246

47//

左 中 右

48double left =0,right=10000000

,mid;

49//

在誤差範圍內迴圈求解

50while(right -left >error)

5159 printf("

外接圓的最大半徑是:%.2f

",mid);

6061 }

演算法經典題目

1.在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。思路 因為這是乙個從左到右遞增和從上到下遞增的二維陣列,例如下 1,2,3,4 2,3,4,5 3,4,5...

js的一道經典題目

今天碰到一道題,裡面既包含了匿名函式的知識,也包含了預編譯,函式的傳參 形參 感覺迷迷糊糊的,所以想著做個總結。var foo function foo console.log foo.n foo console.log foo.n 上面的 可以寫成這樣,看解釋 1 var foo 2 functi...

js的一道經典題目

今天碰到一道題,裡面既包含了匿名函式的知識,也包含了預編譯,函式的傳參 形參 感覺迷迷糊糊的,所以想著做個總結。var foo function foo console.log foo.n foo console.log foo.n 上面的 可以寫成這樣,看解釋 1 var foo 2 functi...