#include <iostream>
#include <vector>
#include <string>
#include <string.h>
#include <stdio.h>
#include <algorithm>
#define maxn 100010
using namespace std;
//一共9种可能的旋转方式
//竖直轴顺时针90
string turn1(string a)
{
string b=a;
b[4]=a[2];
b[2]=a[3];
b[3]=a[5];
b[5]=a[4];
return b;
}
//竖直轴转180
string turn2(string a)
{
string b=a;
b[2]=a[5];
b[5]=a[2];
b[4]=a[3];
b[3]=a[4];
return b;
}
//竖直轴逆时针旋转90
string turn3(string a)
{
string b=a;
b[5]=a[3];
b[2]=a[4];
b[3]=a[2];
b[4]=a[5];
return b;
}
//水平轴顺时针旋转90
string turn4(string a)
{
string b=a;
b[2]=a[1];
b[1]=a[5];
b[5]=a[6];
b[6]=a[2];
return b;
}
//水平轴顺时针旋转180
string turn5(string a)
{
string b=a;
b[2]=a[5];
b[5]=a[2];
b[1]=a[6];
b[6]=a[1];
return b;
}
//水平轴逆时针旋转90
string turn6(string a)
{
string b=a;
b[2]=a[6];
b[6]=a[5];
b[5]=a[1];
b[1]=a[2];
return b;
}
string turn7(string a)
{
string b=a;
b[1]=a[3];
b[4]=a[1];
b[6]=a[4];
b[3]=a[6];
return b;
}
string turn8(string a)
{
string b=a;
b[4]=a[3];
b[3]=a[4];
b[6]=a[1];
b[1]=a[6];
return b;
}
string turn9(string a)
{
string b=a;
b[3]=a[1];
b[1]=a[4];
b[4]=a[6];
b[6]=a[3];
return b;
}
int main()
{
string a;
while(cin>>a)
{
string s1,s2;
for(int i=0;i<6;i++)
{
s1.push_back(a[i]);
}
for(int i=6;i<12;i++)
{
s2.push_back(a[i]);
}
s1=" "+s1;
s2=" "+s2;
//cout<<s1<<" "<<s2;
string s11,s12,s13,s14,s15,s16,s17,s18,s19;
s11=turn1(s1);
s12=turn2(s1);
s13=turn3(s1);
s14=turn4(s1);
s15=turn5(s1);
s16=turn6(s1);
s17=turn7(s1);
s18=turn8(s1);
s19=turn9(s1);
vector<string> varieties={s1,s11,s12,s13,s14,s15,s16,s17,s18,s19};
string s21,s22,s23,s24,s25,s26,s27,s28,s29;
s21=turn1(s2);
s22=turn2(s2);
s23=turn3(s2);
s24=turn4(s2);
s25=turn5(s2);
s26=turn6(s2);
s27=turn7(s2);
s28=turn8(s2);
s29=turn9(s2);
vector<string> varieties2={s2,s21,s22,s23,s24,s25,s26,s27,s28,s29};
bool temp=0;
for(int i=1;i<varieties.size();i++)
{
if(temp==1)
break;
for(int j=1;j<varieties2.size();j++)
{
if(varieties2[j]==varieties[i])
{
puts("TRUE");
temp=1;
break;
}
}
}
if(temp==0)
puts("FALSE");
}
return 0;
}
这个程序虽然能过但是显然太复杂了。转四转判断反而更简单!!!
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <cmath>
#include <cstring>
using namespace std;
void hchange(char *s)
{
int t=s[1];
s[1]=s[2];
s[2]=s[4];
s[4]=s[3];
s[3]=t;
}
void schange1(char *s)
{
int t=s[0];
s[0]=s[2];
s[2]=s[5];
s[5]=s[3];
s[3]=t;
}
void schange2(char *s)
{
int t=s[0];
s[0]=s[1];
s[1]=s[5];
s[5]=s[4];
s[4]=t;
}
int main()
{
char s1[20];
char s[7];
char s2[7];
int i,j,k;
while(scanf("%s",s1)!=EOF)
{
for(i=0; i<6; i++)
s[i]=s1[i];
s[6]='\0';
for(i=0; i<6; i++)
s2[i]=s1[i+6];
s2[6]='\0';
int cnt=0;
for(i=1; i<=4; i++)
{
hchange(s);
if(strcmp(s,s2)==0)
cnt++;
for(j=1; j<=4; j++)
{
schange1(s);
if(strcmp(s,s2)==0)
cnt++;
for(k=1; k<=4; k++)
{
schange2(s);
if(strcmp(s,s2)==0)
cnt++;
}
}
}
if(cnt)
printf("TRUE\n");
else
printf("FALSE\n");
}
return 0;
}