题解 UVA1587 【盒子 Box】
调了快一个小时,所以一定要发题解!
刚看见题目的时候,感觉就是入门难度,然后WA了两次...
#include<bits/stdc++.h>//万能头文件
using namespace std;
int main()
{
int w[10],h[10];
while(cin>>w[1]>>h[1]>>w[2]>>h[2]>>w[3]>>h[3]>>w[4]>>h[4]>>w[5]>>h[5]>>w[6]>>h[6])//输入12个值
{
int map[10001]={0};
for(int i=1;i<=6;i++)
{
map[w[i]]++;
map[h[i]]++;
}
int sum=0;
for(int i=1;i<=10000;i++)
{
if(map[i]!=0)
sum++;
}
if(sum>3)//统计出现几个数,如果出现4个及以上就IMPOSSIBLE
{
// cout<<sum<<endl;
cout<<"IMPOSSIBLE"<<endl;
continue;
}
int ans=0;
int a[10][3]={0};
a[1][1]=w[1];
a[1][2]=h[1];
a[2][1]=w[2];
a[2][2]=h[2];
a[3][1]=w[3];
a[3][2]=h[3];
a[4][1]=w[4];
a[4][2]=h[4];
a[5][1]=w[5];
a[5][2]=h[5];
a[6][1]=w[6];
a[6][2]=h[6];//忘记用循环了QAQ写完才发现
for(int i=1;i<=5;i++)
{
for(int j=i+1;j<=6;j++)
{
if( a[i][1]!=0&&a[j][1]!=0&&a[i][2]!=0&&a[j][2]!=0&&(a[i][1]==a[j][1]&&a[i][2]==a[j][2]||a[i][1]==a[j][2]&&a[i][2]==a[j][1]))
{
a[i][1]=a[j][1]=a[i][2]=a[j][2]=0;
ans++;
}
}
}//这步像开心消消乐一样把长宽相等的消去,记得ans++完也要清零
if(ans==3)
cout<<"POSSIBLE"<<endl;//如果消去3次则能组成盒子,否则不能
else
cout<<"IMPOSSIBLE"<<endl;
}
return 0;
}
求过QAQ