其实只要能想到三对相同就好了
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
char s[20];
struct node
{
char q,p;
};
node s1[5],s2[5];
int vis[5];
int main()
{
while(scanf("%s",s)!=EOF)
{
memset(vis,0,sizeof(vis));
memset(s1,0,sizeof(s1));
memset(s2,0,sizeof(s2));
for(int i=0;i<3;i++)
{
if(s[i]>s[5-i])
swap(s[i],s[5-i]);
s1[i].p=s[i],s1[i].q=s[5-i];
}
for(int i=0;i<3;i++)
{
if(s[i+6]>s[11-i])
swap(s[i+6],s[11-i]);
s2[i].p=s[i+6],s2[i].q=s[11-i];
}
for(int i=0;i<3;i++)
{
char a=s2[i].p,b=s2[i].q;
for(int j=0;j<3;j++)
{
if(vis[j]==0&&a==s1[j].p&&b==s1[j].q){
vis[j]=1;
break;
}
}
}
int flag=0;
for(int i=0;i<3;i++)
{
if(vis[i]==0) {printf("FALSE\n");flag=1;break;}
}
if(!flag) printf("TRUE\n");
}
return 0;
}
本文介绍了一种通过对比两组字符串中是否存在相同的配对来判断是否满足特定条件的算法实现。该算法首先对输入字符串进行预处理,形成有序的字符配对,并检查这些配对在另一组中是否存在。如果所有配对都能找到匹配,则输出TRUE,否则输出FALSE。

被折叠的 条评论
为什么被折叠?



