Problem:我开始方了
Description:
分别给你4个长方形的长和宽,问这4个长方形中,是否能选出3个组成一个大的长方形。
Input:
第一行输入一个整数T(T<=100),表示一共有T组数据
每组数据包含一行,有8个整数,分别为h1、w1、h2、w2、h3、w3、h4、w4。这些整数的范围在[1,1000]
Output:
如果可以组成一个大长方形就输出“Yes”(不包括引号),否则输出“No”(不包括引号)
Sample Input:
2
1 1 1 1 1 2 2 2
1 1 2 2 10 10 20 20
Sample Output:
Yes
No
Language:C++
#include <iostream>
using namespace std;
bool check;
int s[5][2],t[4][2],vis[5];
void dfs(int k)
{
if(k==4)
{
for(int i=0;i<=1;i++)
for(int j=0;j<=1;j++)
for(int k=0;k<=1;k++)
{
if(t[1][i]==t[2][j]&&t[1][i]==t[3][k]&&t[2][j]==t[3][k]) check=true;
if(t[1][i]==t[2][j]+t[3][k]&&t[2][1-j]==t[3][1-k]) check=true;
}
return;
}
for(int i=1;i<=4;i++)
{
if(!vis[i]&&!check)
{
vis[i]=1;
t[k][0]=s[i][0];
t[k][1]=s[i][1];
dfs(k+1);
vis[i]=0;
}
}
}
int main()
{
int T;
cin>>T;
while(T--)
{
check=false;
for(int i=1;i<=4;i++)
cin>>s[i][0]>>s[i][1];
dfs(1);
if(check) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}