|
|
|
@ -4,6 +4,9 @@ char a[N][N];
|
|
|
|
|
/*
|
|
|
|
|
4
|
|
|
|
|
abccddadca
|
|
|
|
|
|
|
|
|
|
2
|
|
|
|
|
aaa
|
|
|
|
|
*/
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
|
|
|
@ -12,6 +15,27 @@ struct Node {
|
|
|
|
|
char c;
|
|
|
|
|
};
|
|
|
|
|
vector<Node> q;
|
|
|
|
|
/*
|
|
|
|
|
把半径当做 1 ,建立坐标系,然后枚举就行了,需要注意的是,在判断三条边的长度是否相等时用 double 牵扯到精度问题,
|
|
|
|
|
解决方法是:比较长度的平方,长度的平方肯定是整数,还有就是层层之间纵坐标相差是sqrt(3) 的倍数,
|
|
|
|
|
为了不牵扯到小数,把纵坐标的 sqrt(3) 当做1 ,求边长时乘三即可。
|
|
|
|
|
*/
|
|
|
|
|
int pf(int x) {
|
|
|
|
|
return x * x;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool check(Node a, Node b, Node c) {
|
|
|
|
|
cout << "a.x=" << a.x << ",a.y=" << a.y << endl;
|
|
|
|
|
cout << "b.x=" << b.x << ",b.y=" << a.y << endl;
|
|
|
|
|
cout << "c.x=" << c.x << ",c.y=" << a.y << endl;
|
|
|
|
|
|
|
|
|
|
// a与b之间距离 不等于 a与c之间距离
|
|
|
|
|
if (pf(a.x - b.x) + pf(a.y - b.y) * 3 != pf(a.x - c.x) + pf(a.y - c.y) * 3) return false;
|
|
|
|
|
// a与b之间距离 不等于 b与c之间距离
|
|
|
|
|
if (pf(a.x - b.x) + pf(a.y - b.y) * 3 != pf(b.x - c.x) + pf(b.y - c.y) * 3) return false;
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int main() {
|
|
|
|
|
#ifndef ONLINE_JUDGE
|
|
|
|
@ -29,16 +53,22 @@ int main() {
|
|
|
|
|
|
|
|
|
|
// 把所有坐标记录下来
|
|
|
|
|
for (int i = 0; i < n; i++) {
|
|
|
|
|
for (int j = 0; j <= i; j++)
|
|
|
|
|
q.push_back({i, j, a[i][j]});
|
|
|
|
|
for (int j = 0; j <= i; j++) {
|
|
|
|
|
q.push_back({n - 1 - i, j, a[i][j]});
|
|
|
|
|
// cout << "x=" << n - 1 - i << ",y=" << j << " " << a[i][j] << endl;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
vector<char> res;
|
|
|
|
|
// 在q数组中,选择任意三个,计算两两间距离是不是相等
|
|
|
|
|
for (int i = 0; i < q.size(); i++)
|
|
|
|
|
for (int j = i + 1; j < q.size(); j++)
|
|
|
|
|
for (int k = j + 1; k < q.size(); k++) {
|
|
|
|
|
Node x = q[i], y = q[j], z = q[k];
|
|
|
|
|
if (check()) res.push_back(x.c);
|
|
|
|
|
for (int j = 0; j < q.size(); j++)
|
|
|
|
|
for (int k = 0; k < q.size(); k++) {
|
|
|
|
|
if (i == j || i == k || j == k) continue;
|
|
|
|
|
|
|
|
|
|
if (q[i].c != q[j].c || q[i].c != q[k].c || q[j].c != q[k].c) continue;
|
|
|
|
|
if (check(q[i], q[j], q[k]))
|
|
|
|
|
res.push_back(q[i].c);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (res.size() == 0)
|
|
|
|
|