main
黄海 2 years ago
parent 072f6fad4c
commit f22a59ac9d

@ -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)

Loading…
Cancel
Save