Cube
Cube
Cube
这道题比赛时想的是只要求出各个边的边长,判断相等边长数大于等于24即可判断是正方体, 如果有零边则不满足条件,但调试了一个半小时还没有ac, 当时有点崩溃,
直到看完别人的题解才发现,只要满足各个边的边长有三种长度即可边长、面对角线长, 体对角线长即可
以下是代码部分
#include
#include
using namespace std;
struct node
{
int x, y, z;
};
int mul(int x)
{
return x * x;
}
int main()
{
int t;
cin >> t;
while(t--)
{
node t[100];
int k[100], cnt = 0;
for(int i = 0; i < 8; i++)
cin >> t[i].x >> t[i].y >> t[i].z;
for(int i = 0; i < 8; i++)
{
for(int j = 0; j < 8; j++)
{
if(i == j)
continue;
k[cnt++] = mul(t[i].x - t[j].x) + mul(t[i].y - t[j].y) + mul(t[i].z - t[j].z);
}
}
sort(k, k + cnt);
int res = 0, ans = 0;
bool flag = 1;
for(int i = 0; i < cnt; i++)
{
if(k[i] == 0)
{
flag = 0;
break;
}
if(ans != k[i])
{
ans = k[i];
res++;
}
}
if(res == 3 && flag)
cout << "YES\n";
else
cout << "NO\n";
}
return 0;
}