题意:
给出n个整数点坐标,问构成正多边形的方法有几种;
思路:
因为整数点能构成的正多边形只有正四边形;
所以四层for判断正四边形就行;
#include <cstdio>
#include <cstring>
int x[25], y[25];
int square(int x){
return x * x;
}
int dis(int a, int b){
return square(x[a] - x[b]) + square(y[a] - y[b]);
}
int judge( int a, int b, int c, int d ){
int dd = dis(a, c);
if (dis(a, b) * 2 == dd && dis(b, c) * 2 == dd
&& dis(c, d) * 2 == dd && dis(d, a) * 2 == dd) return 1;
return 0;
}
int main () {
int n;
while (scanf("%d", &n) == 1) {
for (int i = 0; i < n; i++) {
scanf("%d%d", &x[i], &y[i]);
}
int ans = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i == j)
continue;
for (int k = 0; k < n; k++) {
if(i == k || j == k)
continue;
for (int l = 0; l < n; l++) {
if (i == l || j == l || k == l)
continue;
if (judge(i, j, k, l))
ans++;
}
}
}
}
printf("%d\n", ans/8);
}
return 0;
}