您的位置:首页 > 其它

UVA1587 BOX盒子

2015-04-22 22:02 127 查看
给定矩形的长和宽,判断它们能否构成长方体的六个面

#include<iostream>
#include<string>
using namespace std;
int t;
void change(int a[7][3])                   //输入两个数字,按顺序:小,大;排列。
{
for (int k = 1; k <= 6; k++)
if (a[k][1] > a[k][2])
{
t = a[k][1];
a[k][1] = a[k][2];
a[k][2] = t;
}
}
int main()
{
int a[7][3];
for (int i = 1; i <= 6; i++)
for (int ii = 1; ii <= 2; ii++)
cin >> a[i][ii];
change(a);
int coincide[7] = { 0 };
int square = 0;
int side[7][3] = { 0 };
for (int k = 1; k <= 6; k++)
{
for (int kk = 1; kk <= 6; kk++)
{
if (a[k][1] == a[kk][1] && a[k][2] == a[kk][2] && k != kk)     //两面完全相等
coincide[k]++;
for (int j = 1; j <= 2; j++)
{
if (a[k][1] == a[kk][j] && k != kk)
side[k][1]++;
if (a[k][2] == a[kk][j] && k != kk)
side[k][2]++;
}
}
if (a[k][1] == a[k][2])
square++;
}
int judge = 1;     //
if (square == 0 && coincide[0] == 5)         ////
judge = 0;
if (square > 2 && side[0][0] != 10)  //square大于2即为正方形。出去自身所在边,side应为10
judge = 0;
for (int h = 1; h <= 6; h++)
{
if (coincide[h] == 0)   //没有面面相同

{
judge = 0; break;
}

for (int j = 1; j <= 2; j++)
if (side[h][j] < 3)   //自己算一条,总共四条,应该为3。
{
judge = 0;
break;
}
}
if (judge == 0)  cout << "sorry!wrong!";
else cout << "possible";
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: