這是一道遞迴題?倒不如說是模擬題,不知道是哪個(混蛋)學長和我說的,模擬題是最容易,容易個毛線........好吧,廢話不說了
思路:黑書上有它的思路p20,但我還是說說自己的想法吧。先是按照黑書的思路,要是可以將乙個n邊形的問題規模轉化為n-1,n-2......3,也就是說可以講符合條件的三角形切掉,然後再去找下乙個符合條件的三角形,再切掉.......但是有個問題,什麼時候不切了??
黑書中描述的很清楚,有一種特殊的情況,三種顏色,有一種顏色只出現一次,那麼我們可以以這種顏色為頂點,分切三角形.......例如:
這樣,就是遞迴的結束條件.........我的思路寫的很亂,具體的還是請去看黑書的吧......
**:
#include#include#include#includeusing namespace std;char s[20000];
int a[20000],flag=0,n;
int dfs(char s)
if(i==0)
tmp=len-2;
else
tmp=len-1;
for(int j=i+2;j<=tmp;j++)
} return 1; //解決完後,你會發現所以情況都考慮了,就需要返回
} else if(b==1)
if(i==0)
tmp=len-2;
else
tmp=len-1;
for(int j=i+2;j<=tmp;j++)
} return 1;
} else if(g==1)
if(i==0)
tmp=len-2;
else
tmp=len-1;
for(int j=i+2;j<=tmp;j++)
} return 1;
} else
//這裡wa了一次,第乙個字元與最後乙個字元是相鄰的,但我一開始沒有考慮到它們是否相等
for(int i=0;i
if(s[i]==s[i+1])
for(int i=0;i
if(w==1||r==0||b==0||g==0) //要是r\b\g有為0的,說明肯定有相鄰相等的.....
for(int i=0;i
a[i]=i;
printf("%d\n",n-3); //將多邊形分為n-2個三角形,必然要n-3條邊
flag=0;
dfs(s);
} return 0;
}
凸多邊形三角劃分
傳送門 loj公升級版 這道題雖然是基礎的區間dp,但是還是很值得一說的。我們用dp i j 表示第i個點到第j個點劃分的最大值。注意我們只列舉了兩個端點,第三個頂點是我們列舉的那個k,之後發現k這個頂點可以把整個區間分成兩塊,我們就可以進行區間dp了。只不過這道題要使用高精度。需要自己過載一下,對...
三角形 多邊形面積求法
三點順序 給三個點a,b,c的座標,判斷能否組成乙個三角形 若能,判斷a,b,c是順時針給出的還是逆時針給出的?利用向量叉積判斷是逆時針還是順時針。三角形兩邊的向量分別是 ab x2 x1,y2 y1 ac x3 x1,y3 y1 則ab ac x2 x1 y3 y1 y2 y1 x3 x1 利用右...
三點順序及簡單多邊形
一 三點順序 思路 利用向量叉積 即叉乘 判斷是逆時針還是順時針 設a x1,y1 b x2,y2 c x3,y3 則三角形兩邊的向量分別是 ab x2 x1,y2 y1 ac x3 x1,y3 y1 則ab和ac的叉積為 2 2的行列式 x2 x1,y2 y1 x3 x1,y3 y1 值為 x2 ...