我开始方了
Description
分別給你4個(gè)長方形的長和寬,問這4個(gè)長方形中,是否能選出3個(gè)組成一個(gè)大的長方形。
Input
第一行輸入一個(gè)整數(shù)T(T<=100),表示一共有T組數(shù)據(jù)
每組數(shù)據(jù)包含一行,有8個(gè)整數(shù),分別為h1、w1、h2、w2、h3、w3、h4、w4。這些整數(shù)的范圍在[1,1000]
Output
如果可以組成一個(gè)大長方形就輸出“Yes”(不包括引號(hào)),否則輸出“No”(不包括引號(hào))
Sample Input
2 1 1 1 1 1 2 2 2 1 1 2 2 10 10 20 20Sample Output
Yes NoHINT
C++版本一
?
#include <bits/stdc++.h> #define pi acos(-1) #define fastio ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); using namespace std; typedef long long LL; typedef pair<int, int> PII; const int INF = 0x3f3f3f3f; const int maxn = 10; const LL mod = 1e9 + 7;int X[maxn], Y[maxn];bool solve(int* x, int* y) {if (x[0] == x[1] && x[1] == x[2]) return true;//if (y[0] == y[1] && y[1] == y[2]) return true;if (x[0] + x[1] == x[2] && y[0] == y[1]) return true;return false; }bool judge () {int tmpx[maxn], tmpy[maxn];for (int i = 0; i < 4; i++) {tmpx[0] = X[i];tmpy[0] = Y[i];for (int j = 0; j < 4; j++) {if (i == j) continue;tmpx[1] = X[j];tmpy[1] = Y[j];for (int k = 0; k < 4; k++) {if (k == i || k == j) continue;tmpx[2] = X[k];tmpy[2] = Y[k];for (int s = 0; s < 8; s++) {for (int t = 0; t < 3; t++) if (s&(1<<t)) swap(tmpx[t], tmpy[t]);if (solve(tmpx, tmpy)) return true;for (int t = 0; t < 3; t++) if (s&(1<<t)) swap(tmpx[t], tmpy[t]);}}}}return false; }int main () {//freopen("data1.in", "r", stdin);//freopen("data1.out", "w", stdout);int cas;scanf("%d", &cas);while (cas--) {for (int i = 0; i < 4; i++) scanf("%d%d", &X[i], &Y[i]);printf("%s\n", judge() ? "Yes" : "No");}return 0; }C++版本二
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <algorithm> #include <string.h> #include <cmath> #include <queue> using namespace std; typedef long long ll; const int N=10000; int t,n,m,flag; int a[5][2],vis[5],l,r; int b[5][2]; void bfs(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(b[1][i]==b[2][j]+b[3][k]&&b[2][1-j]==b[3][1-k])flag=1;if(b[1][i]==b[2][j]&&b[1][i]==b[3][k]&&b[2][j]==b[3][k])flag=1;}}}return;}for(int i=1;i<=4&&flag==0;i++){if(vis[i]==0){vis[i]=1;b[k][0]=a[i][0];b[k][1]=a[i][1];bfs(k+1);vis[i]=0;}} } int main() { scanf("%d",&t);while(t--){flag=0;for(int i=1;i<=4;i++){scanf("%d%d",&a[i][0],&a[i][1]);}bfs(1);if(flag)printf("Yes\n");elseprintf("No\n");}return 0; }?
與50位技術(shù)專家面對面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)