【UVA 253 ---キューブ絵画】
トピック出典:入力するようにクリックして、[UVA 253 -キューブの絵]
説明
入力
あなたのプログラムの入力は、標準のファイル終了マーカーで終わるテキストファイルです。各行は、
12文字の文字列。この文字列の最初の6つの文字が描かれたキューブの表現であり、
残りの6つの文字はあなたに別のキューブの表現を与えます。あなたのプログラムは、かどうかを決定する
これらの2つの立方体が回転の任意の組み合わせによって1ができるかどうか、である同じように描かれている
他に変えられます。(反射は許可されません。)
出力
出力はブールのファイルです。後半ができれば、入力のライン毎に、出力は「TRUE」を含む
上記説明したようにそうでなければ「偽」で、回転することにより、第1の半分から得られます。
Sample Input
rbgggrrggbgr
rrrbbbrrbbbr
rbgrbgrrrrrg
Sample Output
TRUE
FALSE
FALSE
解题思路
根据题意我们只需判断正方体的三个互相垂直的面以及与其相对的那个面在另外一个正方形中是否能找到即可。当然找到过的需要去掉。
AC代码:
#include <stdio.h>
char s[15],s1[8],s2[8];
int main()
{
while(~scanf("%s",s))
{
for(int i=0;i<6;i++)
s1[i]=s[i],s2[i]=s[i+6];
bool flag=false;
for(int i=0;i<3;i++)
{
flag=false;
for(int j=0;j<6;j++)
{
if(s1[i]!=s2[j] || s1[5-i]!=s2[5-j]) continue;
flag=true;
s2[j]=s2[5-j]='#';
break;
}
if(!flag) break;
}
if(flag) printf("TRUE\n");
else printf("FALSE\n");
}
return 0;
}