Description
Input
The first line is an integer T, indicating the number of testcases.
For each testcase:
The first line is a integer N and N is no more than 10.
The second line contains 2*N integers describing N rectangles.Each rectangle is described by 2 integers indicating as width and height.
All these integers in the second line are between [1,10000]
Output
原版(存在問題):
#include <stdio.h>
int main() {
int t, i, j, k, p;
scanf("%d",&t);
for (i = 0; i < t; ++ i) {
int n;
scanf("%d",&n);
int array[2][n];
for (j = 0; j < n; ++ j) {
scanf("%d%d",&array[0][j],&array[1][j]);
}
int same[2][n];
for (j = 0; j < n; ++ j) {
same[0][j] = 0;
same[1][j] = 0;
/* Three side by side */
for (k = 0; k < n; ++ k) {
if (array[0][k] == array[0][j] || array[1][k] == array[0][j]) {
same[0][j] += 1;
}
if (array[0][k] == array[1][j] || array[1][k] == array[1][j]) {
same[1][j] += 1;
}
}
if (same[0][j] >= 3 || same[1][j] >= 3) {
printf("Yes\n");
goto Break;
}
/* Two side by side */
if (same[0][j] == 2) {
for (k = 0; k < n; ++ k) {
if (k != j && array[0][k] == array[0][j]) {
for (p = 0; p < n; ++ p) {
if (p != k && p != j && (array[0][p] == array[1][j] + array[1][k]
|| array[1][p] == array[1][j] + array[1][k])) {
printf("Yes\n");
goto Break;
}
}
}
if (k != j && array[1][k] == array[0][j]) {
for (p = 0; p < n; ++ p) {
if (p != k && p != j && (array[0][p] == array[0][j] + array[1][k]
|| array[1][p] == array[0][j] + array[1][k])) {
printf("Yes\n");
goto Break;
}
}
}
}
}
if (same[1][j] == 2) {
for (k = 0; k < n; ++ k) {
if (k != j && array[0][k] == array[1][j]) {
for (p = 0; p < n; ++ p) {
if (p != k && p != j && (array[0][p] == array[1][j] + array[0][k]
|| array[1][p] == array[1][j] + array[0][k])) {
printf("Yes\n");
goto Break;
}
}
}
if (k != j && array[1][k] == array[1][j]) {
for (p = 0; p < n; ++ p) {
if (p != k && p != j && (array[0][p] == array[0][j] + array[0][k]
|| array[1][p] == array[0][j] + array[0][k])) {
printf("Yes\n");
goto Break;
}
}
}
}
}
}
printf("No\n");
Break: continue;
}
}
#include <stdio.h>
int main() {
int t, i, j, k, p, side1, side2;
scanf("%d",&t);
for (i = 0; i < t; ++ i) {
int n;
scanf("%d",&n);
int array[2][n];
for (j = 0; j < n; ++ j) {
scanf("%d%d",&array[0][j],&array[1][j]);
}
for (j = 0; j < n; ++ j) {
for (k = 0; k < n; ++ k) {
if (k == j) continue;
if (array[0][k] == array[0][j]) {
side1 = array[1][k] + array[1][j];
side2 = array[0][j];
for (p = 0; p < n; ++ p) {
if (p == j || p == k) continue;
if (array[0][p] == side1 || array[0][p] == side2
|| array[1][p] == side1 || array[1][p] == side2) {
printf("Yes\n");
goto Break;
}
}
}
if (array[1][k] == array[0][j]) {
side1 = array[0][k] + array[1][j];
side2 = array[0][j];
for (p = 0; p < n; ++ p) {
if (p == j || p == k) continue;
if (array[0][p] == side1 || array[0][p] == side2
|| array[1][p] == side1 || array[1][p] == side2) {
printf("Yes\n");
goto Break;
}
}
}
if (array[0][k] == array[1][j]) {
side1 = array[1][k] + array[0][j];
side2 = array[1][j];
for (p = 0; p < n; ++ p) {
if (p == j || p == k) continue;
if (array[0][p] == side1 || array[0][p] == side2
|| array[1][p] == side1 || array[1][p] == side2) {
printf("Yes\n");
goto Break;
}
}
}
if (array[1][k] == array[1][j]) {
side1 = array[0][k] + array[0][j];
side2 = array[1][j];
for (p = 0; p < n; ++ p) {
if (p == j || p == k) continue;
if (array[0][p] == side1 || array[0][p] == side2
|| array[1][p] == side1 || array[1][p] == side2) {
printf("Yes\n");
goto Break;
}
}
}
}
}
printf("No\n");
Break: continue;
}
}