其實這題也是一樣的:
題目意思也很好懂,就是處理如何判斷多邊行是否對稱。
先找出所有點的中點,然後一共有2×n個點,依次檢查是否關於xy的連線對稱
如果存在對稱軸,必定是點i和點i+n連成的直線,然後分別驗證兩邊對稱的點
到點i和點i+n的距離是否相等
/*
判斷n邊形是否是軸對稱圖形:
n邊形的n個頂點再加上n條邊的中點,共2*n個頂點。
如果存在對稱軸,必定是點i和點i+n連成的直線,然後分別驗證兩邊對稱的點
到點i和點i+n的距離是否相等
*/#include#includeusing namespace std;
#define maxn 20000
#define eps 1e-5
struct node
node[2*maxn+10];
int n,m;
bool flag;//用來標註是否是軸對稱圖形
double dis(int i,int j)//求node[i]和node[j]的距離
bool check(int i,int j,int x,int y)//檢查node[i]和node[j]是否關於xy對稱
//對稱則dis(i,x)==dis(j,x)&&dis(i,y)==dis(j,y);
void ff(int x,int y)//判斷node[x]和node[y]組成的直線是不是對稱軸
if(check(i,j,x,y)==false) return;
}
} int main()
node[m+1]=node[1];
for(i=2;i<=m;i+=2)
flag=false;
for(i=1;i<=n;i++)
if(flag) printf("yes\n");
else printf("no\n");
}return 0;
}
判斷對稱矩陣
我在 題目判斷對稱矩陣.雙重for迴圈第乙個for沒加括號導致錯誤,加上後就可以了。輸入乙個n維矩陣,判斷是否對稱。輸入第一行包括乙個數 n 1 n 100 表示矩陣的維數。接下來的n行,每行包括n個數,表示n n矩陣的元素。可能有多組測試資料,對於每組資料,輸出 yes 表示矩陣為對稱矩陣。輸出 ...
多邊形判斷模板
include include define maxn 1000 define offset 10000 define eps 1e 8 define zero x x 0?x x define sign x x eps?1 x eps?2 0 struct point struct line do...
多邊形判斷點內外
在圖形學中判斷乙個點是否在多邊形內,若多邊形不是自相交的,那麼可以簡單的判斷這個點在多邊形內部還是外部 若多邊形是自相交的,那麼就需要根據非零環繞數規則和奇 偶規則判斷。判斷多邊形是否是自相交的 多邊形在平面內除頂點外還有其他公共點 內 外測試 不自交的多邊形 多邊形僅在頂點處連線,而在平面內沒有其...