總長度為凸包長度加上以l為半徑的圓的周長,n邊形的內角和為(n-2)*180,而扇形內角和加上多邊形內角和恰為n*180(多邊形每個角與對應圓弧的扇形所對應的角互補).
求凸包:
(1)排列:選出縱座標最小的點,(若存在兩點縱座標相同,則取橫座標小的點)為起點,依次與其他點連線,按極座標從小道大依次排列(根據叉乘,極座標小的點在左邊.:如線段p1,p2,若p1在p2左邊,則(p1.x*p2.y)-(p2.x*p1.y)>0。
(2):連線成凸包:從第乙個點開始,找出乙個點與之相連,使得該邊為該點與所有點連線的邊中的最左的邊,又從選中的點開始,依次執行之前的過程,直到結束(結束時找到的點為第乙個點,圍成乙個圈)
**:#include
#include
#include
using namespace std;
struct pointp[1000];
double sum,pi=acos(-1.0)//求出哌的值;
int n,l;
double dis(point p1,point p2)
bool cmp(point p1,point p2)
void search(point q,int a)
if((p3.x-q.x)*(p[0].y-q.y)-(p3.y-q.y)*(p[0].x-q.x)<=0&&(q.x!=p[0].x))//有可能與第乙個點相連
p3=p[0];
sum+=dis(q,p3);
if(p3.x!=p[0].x||p3.y!=p[0].y)
search(p3,k);//如果未圍成凸包,則繼續查詢。 }}
int main()
}sort(p+1,p+n,cmp);
sum=0;
search(p[0],0);
double s=2*l*pi;
sum+=s;
printf("%d\n",int(sum+0.5));
}return 0;
}
演算法設計與分析
輸入輸出 確定性有窮性 np類問題是非確定性計算模型下的易驗證問題類。所有可以在多項式時間內求解的判定問題構成p類問題 1 二分搜尋技術 二分搜尋演算法的基本思路是對給定已排好序的n個元素a 0 n 1 在這n個元素中找出乙個特定元素x。運用分治的思想,將n個元素以n 2為中心對半分。if x a ...
演算法分析與設計
分析,此題可以用動態規劃來做。子問題為 max i max i 1 0 max i 1 nums i nums i max i 表示以nums i 結尾的子串的最大和,最後返回最大的那個即為所求,複雜度為o n class solution return max 另一種實現方法,更加簡潔,即從前往後...
演算法設計與分析
ylbtech miscellaneos 演算法設計與分析 a,返回頂部1,演算法設計與分析 是2009年國防工業出版社出版的圖書,作者是張德富。書主要取材於演算法設計與分析領域的經典內容,並介紹了演算法設計的發展趨勢。內容主要包括非常經典的演算法設計技術,例如遞迴與分治 動態規劃 貪心 回溯 分支...