题意:给出六个矩形的长与宽,判定这六个矩形是否可以组成一个长方体。
思路:先假设可以组成长方体,共有三种情况:
情况一:
该长方体的长、宽、高各不相等,
从第一个矩形输入的两条边(先左后右)开始扫描(逐个矩形扫描,先和输入的六个矩形左侧的边比较,若相等,则频数自增;若不相等,和该输入矩形右侧的边比较,若相等,则频数自增),每条边的出现频数为4,共有12个4出现;
情况二:
该长方体的长、宽、高中,有两种边是相等的(即,长==宽or长==高or宽==高),按照情况一的方法扫描,共有8个6,4个4出现;
情况三:
该长方体为一个正方体,即长==宽==高,
按照情况一的方法扫描,每条边的出现频数为6,共有12个6出现。
代码:
#include
using namespace std;
int main()
{
int
w
[
6
],
h
[
6
],
count1
[
6
]
=
{
0
},
count2
[
6
]
=
{
0
},
n1
=
0
,
n2
=
0;
for(
int
i
=
0;
i
<</span>6;i++)
cin>>w[i]>>h[i];
for(int i=0;i<</span>6;i++) //记录输入矩形的每条边出现频数
{
for(int j=0;j<</span>6;j++)
{
if(w[i]==w[j])count1[i]++;
else if(w[i]!=w[j])
if(w[i]==h[j])count1[i]++;
if(h[i]==h[j])count2[i]++;
else if(h[i]!=h[j])
if(h[i]==w[j])count2[i]++;
}
}
for(int i=0;i<</span>6;i++) //记录不同频数的个数
{
if(count1[i]==6)n1++;
else if(count1[i]==4)n2++;
if(count2[i]==6)n1++;
else if(count2[i]==4)n2++;
}
if(n1==12||n2==12||n1==8&&n2==4)cout<<"POSSIBLE"<<endl;
else cout<<"IMPOSSIBLE"<<endl;
return 0;
}
using namespace std;
int main()
{
}