2016-08-08
UVA - 253 Cube painting
题目大意:给两个正方体涂色,问经过旋转是否能变为一模一样。
解题思路:检测两个正方体的三对面颜色是否对应相等,相等令其为 0,有三对之后输出 TRUE。
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main() {
char str[100];
char cub1[3][2];
char cub2[3][2];
while ( scanf("%s",str) != EOF ) {
for (int i = 0; i < 3; i++) {
cub1[i][0] = str[i];
cub1[i][1] = str[5-i];
cub2[i][0] = str[i+6];
cub2[i][1] = str[11-i];
}
int flag = 0;
int temp[3] = { 9 , 9 , 9 }; //用来记录第二组方块中已匹配过的数据的编号。
for (int i = 0; i < 3; i++) {
int b = 0;
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 3; k++) {
if ( temp[k] == j )
b = 1;
}
if ( b ) {
b = 0;
continue;
}
if ( (cub1[i][0] == cub2[j][0] && cub1[i][1] == cub2[j][1]) || (cub1[i][0] == cub2[j][1] && cub1[i][1] == cub2[j][0]) ) {
flag++;
temp[i] = j;
break;
}
}
}
if ( flag == 3 )
cout << "TRUE" << endl;
else
cout << "FALSE" << endl;
}
return 0;
}