原题链接: http://acm.hdu.edu.cn/showproblem.php?pid=5540
一:题意
给你两个2*2的矩形,每个格子代表一个数。
问你这两个矩形是否可以通过一个做旋转得到另外一个
二:分析
这题可以用数组旋转做。
其实用if判定也并不麻烦。
但是要是为了代码清晰度,还是数组旋转更好 。
三:AC代码
#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
int a[10], b[10];
bool check()
{
for (int i = 0; i < 4; i++)
{
int j;
for (j = 0; j < 4; j++)
if (a[(i + j) % 4] != b[j])
break;
if (j == 4)
return 1;
}
return 0;
}
int main()
{
int num;
scanf("%d", &num);
for (int x= 1; x <= num; x++)
{
for (int i = 0; i <= 1; i++)
scanf("%d", &a[i]);
for (int i = 3; i >= 2; i--)
scanf("%d", &a[i]);
for (int i = 0; i <= 1; i++)
scanf("%d", &b[i]);
for (int i = 3; i >= 2; i--)
scanf("%d", &b[i]);
printf("Case #%d: %s\n", x, check() ? "POSSIBLE" : "IMPOSSIBLE");
}
return 0;
}